Perlについての質問箱 15箱目
■ このスレッドは過去ログ倉庫に格納されています
0379デフォルトの名無しさん
05/02/05 20:45:54メタ文字を展開するのに悩み、evalを使う事で何とか出来たんですが、余り意味がわかってない
せいか挙動が把握しきれません。
$a = '\d \t';
($pattern,$str) = split /\s/,$a;
$_ = 'one2three';
・s/$pattern/$str/g;
・eval {s/$pattern/$str/g};
$_ -> one\tthree
この2つでは、$patternは展開され、$strはメタ文字ではなくリテラル
eval "s/$pattern/$str/g";
$_ -> onethree
これでは、$patternは展開され、$strはメタ文字になります。
なぜ、eval " "でメタ文字が展開されるのでしょうか?
evalを使わないでメタ文字を展開する方法はありますでしょうか?
また、eval " "で展開しないようにするためにquotemetaしたんですが、2重にしなければ駄目でした。
\\tでは駄目、\\\tでは'\t'になる。これもなぜかわかりません。質問ばかりで申し訳ありませんが、
教えてください。
■ このスレッドは過去ログ倉庫に格納されています