• ベストアンサー

Perlでの比較表現について

度々失礼します。 Perlでの比較表現について、例えば $a=aaa,bbb,ccc,ddd; $b=aaa,bbb; if($a =~ $b){ print "include!"; } としたときの結果は include! となり、比較に合致するのですが、 $a=aaa,\[bbb\],ccc,ddd; $b=aaa,\[bbb\]; if($a =~ $b){ print "include!"; } という条件で実行すると、比較に合致せず何も表示されません。 こういった場合、どのように対処すればよろしいでしょうか。 ご存じの方がおられましたらご教授下さい。

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.1

 "[" と "]" は、正規表現ではメタ文字ですので、その直前の "\" をちゃんと認識させてやる必要があります。  具体的には $b の "\" を "\\" に変えて、"aaa,\\[bbb\\]" とします。

ZONAL
質問者

お礼

ありがとうございます。 質問の連続で申し訳ありませんが、$a、$bともにファイルの内容を読み込んできた値である場合、 $bが予め aaa,\[bbb\] となっている場合、 aaa,\\[bbb\\] と値を変更するにはどのようにすればよいのでしょうか。 よろしくお願いします。

その他の回答 (1)

  • akarin6_6
  • ベストアンサー率59% (13/22)
回答No.2

>aaa,\\[bbb\\] >と値を変更するにはどのようにすればよいのでしょうか。 s///で置換するのが手っ取り早いですね。

ZONAL
質問者

お礼

ありがとうございます。 試してみます。