+# https://github.com/perl-entrance-org/workshop-2018/blob/master/3rd/slide.md
+# 次の処理をする region_ref.pl を作りましょう。
+# 1. 以下のデータ構造を表す%japanを作ってください。
+# 2. 1.で作ったデータから、 gotanda と sapporo を出力してください。
+# 3. osaka の中に umeda を追加してください。
+# 4. その後、Data::Dumper を使って %japan 全体の中身を出力してください。
+# 1. 以下のデータ構造を表す%japanを作ってください
+# 問題文のツリー構造にはいろんな解釈の仕方があるが、今回は
+# key : tokyo , osaka などの都道府県名
+# value : gotanda , sapporo などの都市名
+# valueは配列にして、複数の値を入れられるようにする
+# tokyo 配列を作成し、配列リファレンスにしてスカラー変数に格納
+my @tokyo_array = ( 'gotanda', 'shibuya' );
+my $tokyo_ref = \@tokyo_array;
+my $osaka_ref = ['shinsaibashi'];
+# okinawa qwショートカットで配列を作成する
+my @okinawa_array = qw/naha yomitan/;
+# ここから、ハッシュ%japanのkey,valueを設定していく
+# ハッシュjapanのkey:tokyo に対するvalueとして、
+$japan{tokyo} = $tokyo_ref;
+# ハッシュjapanのkey:osaka に対するvalueとして、
+# \をつけた配列名、リファレンスした配列を格納
+$japan{osaka} = $osaka_ref;
+# ハッシュjapanのkey:okinawa に対するvalueとして、
+# \をつけた配列名、リファレンスした配列を格納
+$japan{okinawa} = \@okinawa_array;
+# ハッシュjapanのkey:hokkaido に対するvalueとして、
+$japan{hokkaido} = [ 'sapporo', 'obihiro' ];
+# ハッシュjapanのkey:fukuoka に対するvalueとして、
+$japan{fukuoka} = ['hakata'];
+print $japan{tokyo}->[0], "\n"; # gotanda
+print $japan{hokkaido}[0], "\n"; # sapporo
+# おまけ:yomitan 配列リファレンスをデリファレンスして
+print ${$japan{okinawa}}[1], "\n"; # sapporo
+# $japan{osaka} にumeda を加える
+# $japan{osaka}のvalueは配列リファレンスなので、
+# 配列リファレンスをデリファレンスして配列に戻し、
+# 配列に加える関数 push を用いて umeda という文字列を
+push @{$japan{osaka}} , 'umeda';
+# おまけ: $japan{tokyo} に kichijyouji を加える
+# 配列リファレンス内の要素数が分かっている場合には、
+# 添え字を指定してアロー記法で直接要素を追加できる
+$japan{tokyo}->[2] = 'kichijyouji';