+# Perl入学式 2018 第3回 復習問題 vote.pl
+# https://github.com/perl-entrance-org/workshop-2018/blob/master/3rd/practice.md
+# 1.自分の名前nameと、好きな食べ物favorite_foodsをkeyに持つハッシュリファレンスを作成してください。このとき、好きな食べ物のvalueは配列のリファレンスにしてください。
+# ハッシュリファレンスのvalueに、好きな食べ物を無名配列で入れる
+ name => 'sironekotoro',
+ favorite_foods => [ 'pudding', 'chocolate', ],
+# print Dumper $hash_ref_myself;
+# 2.同様のハッシュリファレンスを2, 3個作ってみましょう。(例が思い浮かばなければ、周りの人のリアルデータを使ってみましょう)
+# https://ja.wikipedia.org/wiki/ジョルノ・ジョバァーナ
+# 1.@favorite_food という配列を作成
+my @favorite_food_array = ( 'chocolate', 'pudding', 'salad' );
+# 2.@favorite_food をリファレンス化して、
+# スカラー favorite_food_array_ref に代入
+my $favorite_food_array_ref = \@favorite_food_array;
+# 3.$array_ref をハッシュリファレンス $hash_ref_comic の
+# キー favolite_food に対する valueとして格納
+ name => 'Giorno Giovanna',
+ favorite_foods => $favorite_food_array_ref,
+# print Dumper $hash_ref_comic;
+# https://ja.wikipedia.org/wiki/リラックマ
+ favorite_foods => [ 'dango', 'hotcake', 'omerice', 'pudding' ],
+my $hash_ref_sanrio = \%hash_sanrio;
+# print Dumper $hash_ref_sanrio;
+# 1-1で作成した複数のハッシュリファレンスを、1つの配列に格納しましょう。
+my @array_direct = ( $hash_ref_myself, $hash_ref_comic, $hash_ref_sanrio );
+# または配列操作の関数 push を使う書き方
+push @array_push, $hash_ref_myself;
+push @array_push, $hash_ref_comic;
+push @array_push, $hash_ref_sanrio;
+# あるいは配列操作の関数 unshift を使う書き方
+unshift @array_unshift, $hash_ref_sanrio;
+unshift @array_unshift, $hash_ref_comic;
+unshift @array_unshift, $hash_ref_myself;
+# どのような方法でも良いので、好きな食べ物のランキングを作って、表示してみてください。
+# for文で配列 @array_direct の各要素(ハッシュリファレンス)にアクセスする
+for my $hash_ref (@array_direct) {
+ # ハッシュリファレンス内のkey "favorite_foods"のvalueを
+ my @favorite = @{ $hash_ref->{favorite_foods} };
+ # for文で配列 @favorite から要素(食べ物)を取り出し、
+ # ハッシュのkeyに設定、valueはインクリメント演算子で
+ for my $food (@favorite) {
+# sort文でハッシュの値(食べ物の出現回数)で降順ソートし、
+my @ranking = sort { $hash{$b} <=> $hash{$a} } keys %hash;
+# for文で配列 @ranking から要素を取り出し、
+# ハッシュのkeyに設定して出現回数と要素名(好きな食べ物名)を
+for my $food (@ranking) {
+ print $hash{$food}, ':', $food, "\n";