perl文末文字列カウントプログラム
perl の文字列カウント
こんにちは。初質問になります。perのlプログラミングについての質問です。
ある文章の「文末」の文字列をカウントし、出力するプログラムをつくりたいと思っています。
以下の文字列カウントプログラムを元に作りたいのですが、正規表現の文末指定のつけどころが恥ずかしながらわかりません。
<テキストデータ例>
やまだくんはみかんを食べています!!たかしくんはりんごを食べています!!
ひろしくんは好きなみかんを食べています!!
??よしこさんは嫌いなりんごを食べていますか??
かなえさんはいつもぶどうを食べています(^-^)
ひろしくんはみかんが好きです(^-^)しかし、ゆうじくんはみかんは好きではありません(^-^)
ひろみさんはみかんとぶどうは嫌いです!!しかし、りんごは好きです。
たとえば上のテキストデータを読み込み
文末のビックリマーク、クエスチョンマークの文字列を検出し
個数をカウントし出力するするようなプログラムです。
<出力結果>
(^-^) 2
!! 2
?? 1
となるようにしたいです。
以下のプログラムだと文末に限らずリストにあてはまる全ての記号がカウントされてしまいます。
@arr = qw('(^-^)','!!','??' );
$fname = "input.txt";
open(IN,"$fname") || &error("Can't open $fname");
read(IN,$buff,-s IN);
close (IN);
foreach (@arr){
$cnt = scalar( () = $buff =~ /$_/g );
print "$_ $cnt\n";
}
お礼
ご回答ありがとうございます。 うまくいきました。 大変助かりました。