はじめてのPerl 第8章 正規表現によるマッチ 練習問題5
練習問題4を元にaで終わるワードの直後に続く最大5文字を別のキャプチャ変数にキャプチャしてください。コードを書き換え療法のキャプチャを表示するようにしてください。
#!/usr/bin/perl use strict; use warnings; use 5.010; while (<>) { chomp; my $names = "names"; if ($_ =~ /(?<$names>\b\w*a\b)(.{0,5})/){ print "'$names' contains '$+{names}$2'\n"; }else{ print "No Matche: $_ \n"; } }
引数として渡すファイルの内容は以下の通りです。
fred
wilma yesterday
barney
wilma&betty
camellia
anna
te
a
Mrs. wilma Frintstone
wilma!
wilma?
wilma test
wilma aiueokaki
wilmawilma
実行コマンドは以下のとおりです。
$ ./practice5.pl < names.txt
結果は以下のようになります。
No Matche: fred
'names' contains 'wilma yest'
No Matche: barney
'names' contains 'wilma&bett'
'names' contains 'camellia'
'names' contains 'anna'
No Matche: te
'names' contains 'a'
'names' contains 'wilma Frin'
'names' contains 'wilma!'
'names' contains 'wilma?'
'names' contains 'wilma '
'names' contains 'wilma aiue'
'names' contains 'wilmawilma'