Perlで、$1を実現するには
[上に]
[前に]
[次に]
Anemone-fish
2000/02/17(木) 13:05:28
たとえば、文字列の置き換え
s/(aaa)/find $1/;
をパラメータ渡しで実現する場合、
$a="(aaa)";
$b="find $1";
として、
s/$a/$b/;
としてもうまくいきません。
どうも$1が解釈されないようなのですが、$bをどのように記述すればいいのでしょうか。
kept
2000/02/17(木) 13:57:16
>$b="find $1";
では、この時点での$1が$bの中で展開されます。
$a='(aaa)';
$b='find $1';
eval "s/$a/$b/";
でいけると思います。evalがポイントです。
ここまでは私でもわかったのですが、
$_の置換しかできません。
任意の変数で置換する方法はどうしたらよいのでしょうか?
やはり
$_=$var;
とかで代入するしか無いのかな。
EMI
2000/02/17(木) 14:45:43
eval "\$var =~ s/$a/$b/";
で、どうでしょう?
kept
2000/02/17(木) 14:59:19
なるほど、エスケープのことを忘れていました。
evalに気づいたところで気を抜いていました。
EMIさんどうもありがとうございます。
Anemone-fish
2000/02/17(木) 16:15:09
[[解決]]
keptさん EMIさん ありがとうございます。
evalというのがあるんですね。また一つ勉強できました。
[上に]
[前に]
[次に]