初めてのPerl 第9章正規表現によるテキスト処理 練習問題1

変数$whatに格納されている内容が三回連続して現れるものにマッチするパターンを書いてください。

#!/usr/bin/perl

use strict;
use warnings;
use 5.010;

my $what = 'fred';
=pod
#入力値に対し$whatの内容を3回繰り返したものをマッチさせたい
#もしwhatがfredだったら
while(<STDIN>){
  chomp;
  if($_ =~ m/($what){3}/g){
    print "OK $_\n";
  }else{
    print "NG $_\n";
  }
}
=cut

$what = 'fred|barney';

while(<STDIN>){
  chomp;
  if($_ =~ m/($what){3}/gi){
    print "MATCHED $_ \n";
  }else{
    print "NOMATCHED $_\n";
  }
}

引数として与えたファイルの内容は以下のとおりです。

redfredfred
fredfredBarney
barneybarneybarney
fredbarneyfred
fred
fredbarney
barneyfredfred

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

$ ./practice1.pl < names.txt

結果は以下の通りです。

MATCHED fredfredfred
MATCHED fredfredBarney
MATCHED barneybarneybarney
MATCHED fredbarneyfred
NOMATCHED fred
NOMATCHED fredbarney
MATCHED barneyfredfred