- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ハッシュに保存した配列を取得する方法)
ハッシュに保存した配列を取得する方法
このQ&Aのポイント
- ハッシュを使用して配列を取得する方法として、まずはハッシュのキーを指定して配列を取得する方法があります。
- また、ハッシュのリファレンスを使用して配列を取得する方法もあります。
- どちらの方法でも、正しく配列を取得するためにはハッシュのキーを正確に指定する必要があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
1ケース目の場合、ハッシュのキーを指定する際に、文字列をクォートで囲む必要があります。また、ハッシュの値に配列を指定する場合は、配列リファレンスを指定する必要があります。以下のように修正してみてください。 ``` my @array1 = (0, 1, 2, 3, 4); my @array2 = (5, 6, 7, 8, 9); # 1ケース目_ハッシュを使用 my %total = ( 'sample1' => \@array1, 'sample2' => \@array2 ); # 結果表示1 my @res = @{$total{'sample2'}}; for (my $i = 0; $i < @res; $i++) { print 'value=' . $res[$i] . "\n"; } ``` 2ケース目の場合、ハッシュの値に配列を指定する場合は、配列リファレンスを指定する必要があります。以下のように修正してみてください。 ``` my @array1 = (0, 1, 2, 3, 4); my @array2 = (5, 6, 7, 8, 9); # 2ケース目_ハッシュのリファレンスを使用 my $total2 = { 'sample1' => \@array1, 'sample2' => \@array2 }; # 結果表示2 my @res2 = @{$total2->{'sample2'}}; for (my $i = 0; $i < @res2; $i++) { print 'value=' . $res2[$i] . "\n"; } ``` 以上、ご参考になれば幸いです。
補足
ご回答ありがとうございます。 ハッシュのキーをクォートで囲むのと配列をリファレンスで渡してあげることにより配列として取得できるようになりました。しかし、「5, 6, 7, 8, 9」が表示されることを期待したのですが「5, 5, 5, 5, 5」となぜか全て5が表示されてしまいました。