「初めてのPerl」 9章 (正規表現の利用法)
東京に来てB2Bの通信ミドルウェアの講習会に参加しているのですが、淡々とした説明があまりにも退屈ですごーく眠いbonlifeです。演習を散りばめたら良いのに今日は講義Onlyですよ…。ということで、帰ってきてPerlの復習をしています。演習問題メモもついに9章「正規表現の利用法」です。
といった感じの内容がサラッと説明されています。エスケープを積み重ねて大文字、小文字を自由自在に操れるのにはビックリしました。(148,149ページ参照)ということで、9章の演習問題のbonlife的解答です。
ex9-1.pl
- $whatに入っているものが3回連続して現れるものいマッチするようなパターンを書く
- もし$whatがfred|barneyだったら、fredfredbarneyなどにマッチすること
#! perl -w use strict; my $what = 'fred|barney'; print "Please input some words : \n"; while (<>) { chomp; if (/($what){3}/) { print "Matched : | $`<$&>$' |\n"; } else { print "No match.\n"; } }
出力結果は以下の通り。
ex9-1.pl Please input some words : fred No match. barney No match. fredfredbarney Matched : | <fredfredbarney> | barneyfredfred Matched : | <barneyfredfred> | barneybarneybarney Matched : | <barneybarneybarney> | ^Z
解答例を見て気づいたことは特になし。同じ。
ex9-2.pl
- perlfunc.podファイルの中を探して、=itemで始まり、その次に何個かの空白文字が続き、さらにPerl識別子名(英数字と下線で構成されるが、先頭は数字以外)が続く行を見つけ出すプログラムを書く
- ダイヤモンド演算子を使う
- プログラムが識別子名を見つけるたびに表示
#! perl -w use strict; while (<>) { if (/^=item\s+([A-Z_]\w*)/i) { print "$1\n"; } }
出力結果は以下の通り。
ex9-2.pl "C:\Perl\lib\pod\perlfunc.pod" Functions Regular Numeric (中略) write write y
解答例を見て気づいたことは特になし。同じ。
ex9-3.pl
- 問題2のプログラムを改造して、=item行に3回以上現れた識別子名だけを、現れた回数とともに表示させる
#! perl -w use strict; my %word_count; while (<>) { if (/^=item\s+([A-Z_]\w*)/i) { $word_count{$1} += 1; } } foreach my $word ( sort keys %word_count ) { if ( $word_count{$word} >= 3 ) { print "\"$word\" appears $word_count{$word} times in \"$0\".\n"; } }
出力結果は以下の通り。
ex9-3.pl "C:\Perl\lib\pod\perlfunc.pod" "Functions" appears 9 times in "C:\test\perl\ex9-3.pl". "Keywords" appears 4 times in "C:\test\perl\ex9-3.pl". "chomp" appears 3 times in "C:\test\perl\ex9-3.pl". (中略) "syswrite" appears 3 times in "C:\test\perl\ex9-3.pl". "use" appears 5 times in "C:\test\perl\ex9-3.pl". "write" appears 3 times in "C:\test\perl\ex9-3.pl".
解答例を見て気づいたことは特になし。ほぼ同じ。英語の表現や3個以上の表現が違うぐらいですね。
という感じで9章の演習問題を解きましたが、すでに17章まで読み終わっているのです。演習問題もサクサク解いて一巡目を早めに終わらせておこうと思います。とか言いつつ、Rubyの勉強も始めちゃいます!本も買っちゃいましたので。
たのしいRuby 第2版 Rubyではじめる気軽なプログラミング
- 作者: 高橋征義,後藤裕蔵
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2006/08/05
- メディア: 単行本
- 購入: 11人 クリック: 350回
- この商品を含むブログ (259件) を見る