1. 「自分の名前 (name)」と「好きな食べ物の配列のリファレンス (favorite_foods)」を持ったハッシュリファレンスを作成しましょう (つまり、好きな食べ物は複数個書いてください)
2. 同様のハッシュリファレンスを2, 3個作ってみましょう (周りの人のリアルデータを使ってハッシュrefを作ると良いかもしれません)
3. 作成した複数のハッシュリファレンスを1つの配列に格納しましょう (配列を操作する関数を使っても良いですし、直で代入しても良いです)
4. どんな方法でも良いので、好きな食べ物のランキングを作って表示してみて下さい
複数のハッシュリファレンスを格納した配列を for でひと通りなめて (つまり各ハッシュリファレンスにアクセスし)、
favorite_foodsにアクセスして、その配列リファレンスを配列にひと通り格納して……という方法が1つ考えられますね!
my $boolfool = {
name => 'boolfool',
affiliation => 'namba.pm',
perl => 40,
python => 10,
ruby => 20,
php => 0,
binary => 0,
};
- score.pl には上記のようなハッシュリファレンスがいくつか宣言してあります
- それぞれの人物の
perl
、ruby
、python
... といった分野毎の合計値をそれぞれのリファレンスに追加しましょう @people
や@languages
と言った変数に各々のリファレンスや言語などを格納しておくとやりやすいでしょう
- 新たに
$average
といったハッシュリファレンスに各々の人物の名前を key として、perl
、ruby
、python
の平均値を格納してください - 出力には
Data::Dumper
などを使って表示させてください
0 - 19 =>
20 - 39 => ★
40 - 59 => ★★
60 - 79 => ★★★
80 - 99 => ★★★★
100 => ★★★★★
----
boolfool:
perl: ★★
python:
ruby: ★
php:
binary:
- それぞれの人物の言語毎の成績を上記を参考に5段階表示して出力して下さい
- 全角文字を出力するので冒頭に
binmode STDOUT, ":utf8";
と書いておくとよいでしょう
$highscore
と言ったハッシュリファレンスを用意し、所属毎に優秀な人物の名前を push して下さい$highscore
における key を所属として配列のリファレンスにするのがいいですね
[
{
"python":10
"binary":0
"name":boolfool
"ruby":20
"perl":40
"php":0
"affiliation":namba.pm
"sum":70
}
{
"python":50
"binary":0
"name":papix
"ruby":50
"perl":60
"php":0
"affiliation":namba.pm
"sum":160
}
]
- どんな方法でもよいので上記のような JSON 風 Dumper を作成して下さい