科学数を 10 進数に置き換える試みの一環として、後方参照を文字列変数に保存したいのですが、うまくいきません。
私の入力ファイルは次のとおりです。
,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
で何かが得られます (残念ながら、これは私が望むものではありません)。
誰でも助けることができますか?
私は Strawberry Perl (5.16.1.1-64bit) を 64 ビットの Windows 7 マシンで実行していますが、Perl の経験はまったくありません。