はじめてのPerl 第8章 正規表現によるマッチ 練習問題4

練習問題3のコードを元に、$1の代わりに名前付きキャプチャを使うようにしてください。コードを書き終えてそのラベル名を表示するようにしてください。

#!/usr/bin/perl

use strict;
use warnings;

use 5.010;

while (<>) {
  chomp;
  my $names = "test";
  if ($_ =~ /(?<$names>\b\w*a\b)/) {
    print "'$names' contains '$+{$names}'\n";
  } else {
    print "No match: | $_ | \n";
  }
}

実行コマンドは以下の通りです。

./practice4.pl < names.txt

結果は以下の通りです。

No match: | fred |
'test' contains 'wilma'
No match: | barney |
'test' contains 'wilma'
'test' contains 'camellia'
'test' contains 'anna'
No match: | te |
'test' contains 'a'
'test' contains 'wilma'