第5章 ハッシュ 練習問題

ここもまだまだ簡単。

5-1 名前を入力してそれに対応した姓を出力する

use strict;

my %nameset = (
    "akari" => "mizunashi",
    "aika"  => "granzchesta",
    "alice" => "carroll"
);

print "input a name: ";
chomp(my $name = <STDIN>);

print "family name is $nameset{$name}\n";

実行して、"akari"と入力してみると、

$ ./ex5-1.pl 
input a name: akari
family name is mizunashi

となってうまくいった。解答によるとchompではじめて現れた変数にmyしたりするのは良くあることらしいので、安心。

5-2 テキスト中に現れる単語の数を数える

単語は改行区切りですよ。以下のような内容のwords.txtを用意した。

haruhi
mikuru
yuki
yuki
haruhi
kyon
haruhi
mikuru

そして、書いたプログラムはつぎのようなの。

use strict;

chomp(my @lines = <STDIN>);

my %words;
foreach (@lines) {
    $words{$_} += 1;
}
foreach my $word (sort keys %words) {
    print "$word: $words{$word}\n";
}

また、変なとこにmyがある気がするが、これも大ジョブにちがいない。結果は、

$ cat words.txt | ./ex5-2.pl 
haruhi: 3
kyon: 1
mikuru: 2
yuki: 2

おうらい、おうらい。

しかし、まだ基本的な内容というのに進みが遅いなぁ。書く必要のなさそうなとこはどんどん抜かしちゃおうかしらね。

初めてのPerl

初めてのPerl

  • 作者: ランダル・L.シュワルツ,トムフェニックス,Randal L. Schwartz,Tom Phoenix,近藤嘉雪
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2003/05
  • メディア: 単行本
  • 購入: 15人 クリック: 474回
  • この商品を含むブログ (294件) を見る