構文エラーの理由:
my @hash{1..4}=(1..4);
しかし、これではありません:
my %hash;
@hash{1..4}=(1..4);
my
引数として、変数または括弧内の変数のリストが必要です。
@hash{1..4}
どちらでもないので
my @hash{1..4}
構文エラーです。
ハッシュスライスは何らかの結果を返す操作であるため、最初の例は失敗します。明らかに、my
宣言でそれを付加することは、そうでないようなものを書くのと同じように、意味my 2+2
がありません。my
宣言するには、変数のリストが後に続く必要があります。
2番目の例はまさにそれを行います-現在のスコープでハッシュを宣言してから、そのスライスにアクセスします。