私は次のperlサブルーチンを持っています:
sub rep {
defined ($filein = shift) || die ("no filein");
defined ($fileout = shift) || die ("no fileout");
$look = shift;
$replace = shift;
open (infile, "$filein")|| die;
open (outfile, "> $fileout")|| die;
while (<infile>) {
s/$look/$replace/g;
print outfile;
}
(close the files)
}
および次のテキスト:
kuku(fred) foo(3)
kuku(barney) foo(198)
私は次の構造でそれを呼び出したい:
$look = kuku\((\w+)\) foo \((\d+)\),
$replace = gaga\(($1)\) bar\(($2)\).
しかし、次の (およびそのバリエーション) でサブを呼び出したとき、$1、$2 形式を受け入れるようにできませんでした:
&rep ($ARGV[0], $ARGV[1],
"kuku\\(\(\\w+\)\\) foo \\(\(\\d+\)\\)" ,
"gaga\\(\(\$1\)\\) bar\\(\(\$2\)\\)");
私が得るのは次のとおりです。
gaga($1) bar($2)
gaga($1) bar($2)
私は何を間違っていますか?検索と置換の検索結果としてサブルーチンに $1\ $2 (...) を特定させるにはどうすればよいですか?