#contents * s///ee $r = '$1'; $str =~ s/(.*)/$r/e; # $strは'$1'に置換される $str =~ s/(.*)/$r/ee; # s/(.*)/$1/ と等価 $rr = '$r'; $str =~ s/(.*)/$rr/e; # $strは'$r'に置換される $str =~ s/(.*)/$rr/ee; # $strは'$1'に置換される $str =~ s/(.*)/$rr/eee; # s/(.*)/$1/ と等価 eを重ねるとevalを重ねるような評価になる。~ どのバージョンからなのかは知らない。 ただし結局 /e な扱いなので HOGE$r などは評価できない。 # イバラの道 # $rに / が含まれると転ける eval "\$str =~ s/(.*)/$r/;"; # \1などは使えないがまだ機能する # eの数だけクオートがネストする $str =~ s/(.*)/qq|"$r"|/ee; * m//g マッチする箇所を抽出 push(@words, $str =~ /\w+/g); * 他 - 正規表現で a|b の時 aがbより優先される