
156
8 章 正規表現によるマッチ
if ( $names =~ m/(?P<last_name>\w+) and \w+ (?P=last_name)/ ) {
say "I saw $+{last_name}";
}
8.4.4
自動マッチ変数
キャプチャするカッコの有無にかかわらず、
3
個のマッチ変数が無料で提供されます。これが良
い知らせです。その一方で、悪い知らせもあります。無料で手に入るマッチ変数は、妙ちくりんな
名前を持っているのです。
Larry
は、
$gazoo
とか
$ozmodiar
のような、ほんの少しマシな名前を付けることもできたは
ずです。しかし、このような名前の変数を使いたいと思う人がいるかもしれません。駆け出しの
Perl
プログラマが、初めて書くプログラムで最初に使う変数の名前を選ぶ前に、
Perl
の特殊変数
すべての名前を覚えなくても済むように、
Larry
は、
Perl
の組み込み変数の多くに、妙ちくりんな
「おきて破り」の名前を付けることにしました。ここで紹介するマッチ変数は、記号が名前になっ
ている
$&
、
$`
、
$'
です。これらは、奇妙で不細工で風変わりですが、れっきとした変数名なので
す。文字列のうち、実際にパターンにマッチした部分が、自動的に
$&
に格納されます。
if ("Hello there, neighbor" =~ /\s(\w+),/) {
print "That actually matched '$&'.\n";
}
このコードを実行すると、マッチした部分は
" there," ...