我有一个多线的文件,我尝试对最后一个数字进行计算。这是我的代码
open(FH,"<sample.txt") or die "Can't open that file\n";
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
在输出中,仅修改最后一行,其余行保持不变。有谁知道为什么?
答案 0 :(得分:3)
您真正应该做的是将结构化数据视为结构化数据。
你有这样的数据:
Mark:1/12/68:1000
Ann:2/13/49:5000
Joe:7/25/73:300
并且您希望在每行的第3个字段中添加5000,所以请执行以下操作:
while ( my $line = <$fh> ) {
chomp $line;
my @fields = split( /:/, $line );
$fields[2] += 5000;
say join( ':', @fields );
}
使用s///e
增加字段中的数值就像用螺丝刀搅拌涂料一样。你可以做到,但这不是最明智的做法。