前回のエディタの置換機能を使って数を数えるやり方(小技集001、小技集002)は簡単ですが、何種類もの文字列の数を数えるとなると少したいへんです。そこでほんの少し本格的に、Perlで簡単に数を数えましょう。
あるフォルダ内の拡張子がtxtであるファイル中に含まれる「★」「●」「〓」の数を数えることにします。
同じフォルダに下のようなスクリプト(sample003.pl)ファイルを作ります。
while(<>){ $hosi += s/★/★/g; $maru += s/●/●/g; $geta += s/〓/●/g; } print "★: $hosi個\n"; print "●: $maru個\n"; print "〓: $geta個\n";
コマンドプロンプトをそのフォルダで開き
jperl samole003.pl *.txt
と実行します。すると
★:x個
●:y個
〓:z個
と、一覧で数えてくれます。
【ポイント】
置換演算子sにgオプションを付けると置換した数を返します。sコマンドは本来置換コマンドですが、ここでは単に数を数える目的で使っています。
$hosi = s/★/★/g;
なら読み込んだ行の星の数が変数$hosiに入ります。
テキストエディタでの数の数え方と同じことをPerlでやっているだけですが、数を入れておく変数を使うことで何種類もの文字列を一度で数えることができます。