作为尝试用十进制数替换科学数字的一部分,我想将反向引用保存到字符串变量中,但它不起作用。
我的输入文件是:
,8E-6,
,-11.78E-16,
,-17e+7,
然后我运行以下命令:
open FILE, "+<C:/Perl/input.txt" or die $!;
open(OUTPUT, "+>C:/Perl/output.txt") or die;
while (my $lines = <FILE>){
$find = "(?:,)(-?)(0|[1-9][0-9]*)(\.)?([0-9]*)?([eE])([+\-]?)([0-9]+)(?:,)";
$noofzeroesbeforecomma = eval("$7-length($4)");
$replace = '"foo $noofzeroesbeforecomma bar"';
$lines =~ s/$find/$replace/eeg;
print (OUTPUT $lines);
}
close(FILE);
我明白了
foo bar
foo bar
foo bar
我本来期望的地方
foo 6 bar
foo 14 bar
foo 7 bar
$noofzeroesbeforecomma
似乎是空的或不存在的。
即使进行了以下调整,我也会得到一个空的结果
$noofzeroesbeforecomma = $2;
只有$2
直接插入替换字符串才能给我一些东西(不幸的是,这不是我想要的)。
任何人都可以帮忙吗?
我在 64 位 Windows 7 机器上运行 Strawberry Perl (5.16.1.1-64bit),并且对 Perl 非常缺乏经验