- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Perl/配列のループに関して教えてください。)
Perl/配列のループで$data->{start_hour};が取得できない理由
このQ&Aのポイント
- Perlの配列のループで$data->{start_hour};が取得できない理由について教えてください。
- foreach文を使用して配列の要素をループで処理する際、$data->{start_hour};が機能しない問題が発生しています。
- ループの中で$data->{start_hour};を使用して配列の要素を取得しようとすると、最初の要素のみが正常に取得され、それ以降の要素では取得できない状況です。なぜこのような問題が起きるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
[] は (無名) 配列へのリファレンスを生成し, リファレンスはスカラです. つまり my @shop = [ {'start_hour'=> '1100','shift'=> [1,2] }, {'start_hour'=> '1130','shift'=> [1,3] } ]; とすると, @shop は「2個の要素を持つ配列へのリファレンス」という 1個の要素しか持ちません. やりたいことは, 本当は my @shop = ( {'start_hour'=> '1100','shift'=> [1,2] }, {'start_hour'=> '1130','shift'=> [1,3] } ); だったりしませんか?
その他の回答 (1)
- kuroizell
- ベストアンサー率55% (95/170)
回答No.2
配列に()か[]かの、びみょーな違いです。 my @shop = ( {'start_hour'=> '1100', 'shift'=> [1,2] }, {'start_hour'=> '1130', 'shift'=> [1,3] } ); foreach my $data (@shop) { print $data->{start_hour}; } または my $shop = [ {'start_hour'=> '1100', 'shift'=> [1,2] }, {'start_hour'=> '1130', 'shift'=> [1,3] } ]; foreach my $data (@{$shop}) { print $data->{start_hour}; }