Hatena::Grouparaistudy

iwasekiの日記

2007-06-10

[]5章 ハッシュ はてなブックマーク - 5章 ハッシュ - iwasekiの日記

またサボってた

長々やってても仕方ないのでこの章からサクサク読み進めて、要点だけココに吐き出して、プログラムを書くことを優先させよう。

ポイント

練習問題

練習問題1

まず書いたのがこれ

#!/usr/bin/perl

use strict;
use warnings;

my %hash = (
	fred => 'flintstone',
	barney => 'rubble',
	wilma => 'flintstone',
);

print "名前を入力してください:";
my $name = <STDIN>;
chomp $name;

print "$name の苗字は $hash{$name} です\n";

解答を見たらキーがない場合の処理を書いてあったら追加点だというので、追加点を狙いにいってみた。

#!/usr/bin/perl

use strict;
use warnings;

my %hash = (
	fred => 'flintstone',
	barney => 'rubble',
	wilma => 'flintstone',
);

print "名前を入力してください:";
my $name = <STDIN>;
chomp $name;

if (exists $hash{$name}){
	print "$name の苗字は $hash{$name} です\n";
}
else {
	print "その人は登録されていません\n";
};
練習問題2
#!/usr/bin/perl

use strict;
use warnings;

my %hash = ();

print "一行に一つずつ単語を入力してください\n";
print "入力が終わったら Ctrl+D を入力してください\n";

my @input = <STDIN>;
chomp @input;

foreach (@input){
	$hash{$_} += 1;
}

foreach (sort keys %hash){
	print "$_$hash{$_}\n";
}

問題文にあった、

未定義値を数値のように扱うと、Perl自動的にそれを0に変換してくれることを思い出しましょう

をよく覚えておく。ただハッシュを宣言して、+1していくだけでundefから1に変わる。値が数値だと宣言しなくていいのは楽。