- 追加された行はこの色です。
- 削除された行はこの色です。
#contents
* s/〜/〜/ee
* 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/ と等価
$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の数だけクオートがネストする
$r =~ s/\}/\\\}/g;
$str =~ s/(.*)/qq{qq{$r}}/ee;
* m//g
マッチする箇所を抽出
push(@words, $str =~ /\w+/g);
* splitの罠
# 多分意図しない動作
split(/(hoge)/, $string);
# こっちが正解
split(/(?:hoge)/, $string);
前者は qw(1st hoge 2nd hoge 3rd) のような結果が返る。
* 他
- 正規表現で a|b の時 aがbより優先される