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というのがあるんですね。また一つ勉強できました。

[上に] [前に] [次に]