perl 正規表現で簡単なマッチング3

#oオプション
#oオプションをつけると、最初のマッチ時に展開した変数の値をそれ以後のマッチでも使い続ける。

#配列と初期マッチ文字列の定義
@array = ("Perl ABC", "ABCDEF", "Perl", "ABC");
$serch = "ABC";

#途中で$serchの値を変更する
print "oなしのマッチ\n";
foreach(@array){
    if($_ =~ /$serch/){
        $serch = "Perl";
        print "$_\n";
    }
}

$serch = "ABC";

#途中で$serchの値を変更。oを使ってマッチ
print "\no付きのマッチ\n";
foreach(@array){
    if($_ =~ /$serch/o){
        $serch = "Perl";
        print "$_\n";
    }
}


#oオプション無しのパターンマッチでは$serchの値が変更されるとそれに従う。このため
#2度目以降のパターンマッチではPerlというパターンで検索している。
#oオプション付きのパターンマッチでは$serchを最初に一度だけ展開して文字列「ABC」を得ると、
#これを固定の文字列のように扱うため$serchの値の変更は無視される。

#実行結果

# oなしのマッチ
# Perl ABC
# Perl

# o付きのマッチ
# Perl ABC
# ABCDEF
# ABC

初めてのPerl 第6版

初めてのPerl 第6版