次のように、配列のハッシュがあります。
my %hash = (
234 => ["Larry", "Curly", "Moe"],
235 => ["bb", "ab", "aa", "ab", "bb"],
236 => ["aa", "ab", "bb", "aa", "bb"],
)
ハッシュの各キーについて、配列の各要素をループ処理し、それをスカラー変数に割り当てて処理できるようにしてから、配列の次の要素に移動したいと考えています。キーの配列のすべての要素を処理したら、次のキーに進み、その配列のすべての要素を個別に処理します。
ハッシュ値 (この場合は各キーの配列) を反復処理するコード スニペットを見つけて変更しました。次に、その配列の各要素を反復処理するネストされた for ループがあります。しかし、それは私が期待することをしていません。
for my $value (values %hash) {
for (@$value) {
my $index = shift($_);
#process index
}
}
エラー メッセージ Not an ARRAY reference at [行番号]
たとえば、最初の反復では、それを処理できるよう$index
に等しくしたいと考えてLarry
います。次の反復では、処理できるよう$index
に等しくしたいと考えています。Curly
次の反復は、$index
等しいはずMoe
です。それを処理します。次の反復は、$index
等しいはずbb
です。
よりも優れた機能があるかもしれませんshift
。このshift
関数は、配列から最初の要素を取り出します。配列のハッシュに値を保持して、配列のハッシュを再設定する必要がないようにしたい。
ありがとう