我有一个包含多行的文件,我试图在其中对最后一个数字进行计算。这是我的代码
open(FH,"<sample.txt") or die "Can't open that filen";
while ($line=<FH>) {
chomp $line;
$line=~s/d+$/$&+5000/eg;
print $line, "n";
}
数据看起来很像这个
Mark:1/12/68:1000
Ann:2/13/49:5000
Joe:7/25/73:300
在输出中,只有最后一行被修改,其余的保持不变。有人知道为什么吗?
您真正应该做的是将结构化数据视为结构化数据。
你有这样的数据:
Mark:1/12/68:1000
Ann:2/13/49:5000
Joe:7/25/73:300
并且你想在每行的第三个字段中添加5000,所以这样做:
while ( my $line = <$fh> ) {
chomp $line;
my @fields = split( /:/, $line );
$fields[2] += 5000;
say join( ':', @fields );
}
使用s///e
来增加字段中的数值就像用螺丝刀搅拌油漆一样。你可以这样做,但这不是最明智的方法。