- ベストアンサー
split後のデータ数でなくて、リスト値を代入したい。
my %hash = (); $hash{'NAMAE'} = "田中"; $hash{'TEN'} = split(/,/, "100, 50, 70"); 名前はスカラーデータなので、問題ないのですが点数はリストなので このまま代入し、 $has{'TEN'}で見てみると3というデータ数が入ります。 これをリストで代入させたいのですがどうすればよいのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
結局のところ配列のリファレンスを入れるしかないわけですが, そのためには $hash{'TEN'} = [split(/,/, "100, 50, 70")]; と [ ... ] でいきなりリファレンスにするのが最も単純. ところで, この split だけど /,/ じゃなく /,\s*/ にした方が安全じゃないかな?
その他の回答 (3)
- maura
- ベストアンサー率46% (48/104)
#1の方の補足です ハッシュじゃなくて、配列に入れればいいと思います。 $hash{'TEN'} = split(/,/, "100, 50, 70"); ↓ @TEN = split(/,/, "100, 50, 70"); ↓ $hash{'TEN'} = \@TEN; print $hash{'TEN'}->[0]; # 100と表示
- venzou
- ベストアンサー率71% (311/435)
いったん配列に入れて、そのリファレンスを入れれば良いのでは? my %hash = (); $hash{'NAMAE'} = "田中"; @hash_ten = split(/,/, "100, 50, 70"); $hash{'TEN'} = \@hash_ten; print "@{$hash{'TEN'}}\n"; print "${$hash{'TEN'}}[0]\n"; print "${$hash{'TEN'}}[1]\n"; print "${$hash{'TEN'}}[2]\n";
- moon_night
- ベストアンサー率32% (598/1831)
ハッシュじゃなくて、配列に入れればいいと思います。 $hash{'TEN'} = split(/,/, "100, 50, 70"); ↓ @TEN = split(/,/, "100, 50, 70");
お礼
どうしても$hash{'TEN'}にリストを入れたいのですが、参照などでセットしても無理でしょうか?取り出し方も?です。 このあたりが私にとって未開なので不安です。