すいません 下で foreach (a..c) { と書いているのは foreach ('a'..'c') { と書かないと怒られます。(警告だけで、動作はするようです) ようは、a、b、c は変数の名前でなく文字列で、 %aa、%bb、%cc というハッシュのキーですね。 %aa というハッシュの、キーが 'a' の値にアクセスするには $aa{'a'} と書きます。ただしこの場合 a はハッシュのキーであると はっきりしているので $aa{a} と省略形で書けます。 同じハッシュでキー x の値に 550 を、キー y の値に 660 を入れるには キーと値を交互に指定するリストを使って %aa = ('x', 550, 'y', 660); と書きますが、キーと値の関係をはっきりさせるために カッコの変わりに => という記号を使えば %aa = ('x' => 550, 'y' => 660); と書けます。で、この場合は => の左側はハッシュのキーなので 省略して %aa = (x => 550, y => 660); とも書けるわけです。 でも、この '' 省略方式だと、 空白を含むキーが使えません。 %kg = ('yamada tarou' => 80, 'satou tamao' => 50); だと $kg{'yamada tarou'} に 80 が、$kg{'satou tamao'} に 50 が 入りますが、 %kg = (yamada tarou => 80, satou tamao => 50); だとエラーが出て動きません。 $kg{yamada tarou} も怒られて動きません。 下のプログラムで a, b, c というのは、 ハッシュのキーで「文字列」であることを覚えておいてください。 |