2

構文エラーの理由:

my @hash{1..4}=(1..4);

しかし、これではありません:

my %hash;
@hash{1..4}=(1..4);
4

3 に答える 3

6

最初の例は、字句スコープの「my」 +ハッシュスライスであり、有効な構文ではないスライスの方法でハッシュを宣言できることを前提としています。2番目の例は適切であり、厳密な+警告を使用していると仮定して、最初にハッシュを宣言します。

于 2012-06-14T14:16:42.690 に答える
5

my引数として、変数または括弧内の変数のリストが必要です。

@hash{1..4}

どちらでもないので

my @hash{1..4}

構文エラーです。

于 2012-06-14T16:19:53.880 に答える
3

ハッシュスライスは何らかの結果を返す操作であるため、最初の例は失敗します。明らかに、my宣言でそれを付加することは、そうでないようなものを書くのと同じように、意味my 2+2がありません。my宣言するには、変数のリストが後に続く必要があります

2番目の例はまさにそれを行います-現在のスコープでハッシュを宣言してから、そのスライスにアクセスします。

于 2012-06-14T14:45:21.923 に答える