誰かが私にそれが何@{hash{$key}}
を意味するのか教えてもらえますか?そして、私が書いたときに私が正しかったかどうか@{hash{$key}}[$i]=$list[$i+1]
?
1035 次
2 に答える
7
@{hash{$key}}
奇妙な書き方です
@hash{$key}
これはハッシュスライスと呼ばれます。これにより、ハッシュから一度に複数の値をフェッチできます。例えば、
say for @hash{'a', 'b'};
意味
say for $hash{a}, $hash{b};
だから使うのはかなりばかげている
@hash{$key}
それ以外の
$hash{$key}
@{hash{$key}}[$i]=$list[$i+1];
コンパイルされないので、いいえ、それを使用するのは正しくありませんでした。
于 2013-03-20T07:51:38.413 に答える
4
池上が説明するように、@{hash{$key}}
はハッシュ スライス (1 つの要素のみ) です。
代わりにこれが必要になる可能性があります: @{$hash{$key}}
. ハッシュの各要素が配列参照である場合、この構文で配列にアクセスできます。
たとえば、ハッシュに次のような配列が含まれているとします。
my %hash = (
foo => [1, 2, 3, 4, 5],
bar => [qw/baz sproing blargh/]
);
@{$hash{foo}}
だろう(1, 2, 3, 4, 5)
その場合、次の構文が機能します。
${$hash{$key}}[$i]=$list[$i+1]
配列全体ではなく、配列の要素にのみアクセスしていることに注意してください。したがって、${$hash{$key}}
の代わりに使用します@{$hash{$key}}
。
同じことを行う別の方法は次のとおりです。
$hash{$key}->[$i]=$list[$i+1]
逆参照の->
構文は${...}
、特に複雑なデータ構造を持っている場合は、すっきりしているため、多くの場合 よりも好まれます。
于 2013-03-20T09:11:24.373 に答える