【发布时间】:2011-03-10 16:24:01
【问题描述】:
我正在尝试编写一个 perl 脚本来搜索文本文件,查找所有十进制数字,并通过一些缩放因子对其进行修改。到目前为止,我已经成功地用正则表达式提取了数字:
open(INPUT, $inputPath) or die "$inputPath cannot be opened.";
while ($thisLine = <INPUT>) {
while ($thisLine =~ m/(-*\d+\.\d+)/g) {
if(defined($1)) {
$new = $scalingFactor*$1;
print $new."\n";
}
}
}
close (INPUT);
但是,我还没有弄清楚如何将新值重新插入到文件中。我尝试使用s/(-*\d+.\d+)/$scalingFactor*$1/g 进行替换,但当然这插入了$scalingFactor 的字符串表示,而不是评估表达式。
我是 perl 新手,因此我们将不胜感激。提前致谢,
-丹
编辑:解决方案(基于 Roman 的回复)
while ($thisLine = <INPUT>) {
$thisLine =~ s/(-*\d+\.\d+)/$scalingFactor*$1/ge;
prinf OUTPUT $thisLine;
}
另外,肖恩的解决方案对我也很有效。谢谢大家!
【问题讨论】:
-
一般说明:使用三个参数openlike,
open(my $fh, '<', "input.txt") or die $!; -
@Nikhil Jain 谢谢,我会改变的。