• ベストアンサー

split後のデータ数でなくて、リスト値を代入したい。

my %hash = (); $hash{'NAMAE'} = "田中"; $hash{'TEN'} = split(/,/, "100, 50, 70"); 名前はスカラーデータなので、問題ないのですが点数はリストなので このまま代入し、 $has{'TEN'}で見てみると3というデータ数が入ります。 これをリストで代入させたいのですがどうすればよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

結局のところ配列のリファレンスを入れるしかないわけですが, そのためには $hash{'TEN'} = [split(/,/, "100, 50, 70")]; と [ ... ] でいきなりリファレンスにするのが最も単純. ところで, この split だけど /,/ じゃなく /,\s*/ にした方が安全じゃないかな?

その他の回答 (3)

  • maura
  • ベストアンサー率46% (48/104)
回答No.3

#1の方の補足です ハッシュじゃなくて、配列に入れればいいと思います。 $hash{'TEN'} = split(/,/, "100, 50, 70"); ↓ @TEN = split(/,/, "100, 50, 70"); ↓ $hash{'TEN'} = \@TEN; print $hash{'TEN'}->[0]; # 100と表示

  • venzou
  • ベストアンサー率71% (311/435)
回答No.2

いったん配列に入れて、そのリファレンスを入れれば良いのでは? 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)
回答No.1

ハッシュじゃなくて、配列に入れればいいと思います。 $hash{'TEN'} = split(/,/, "100, 50, 70"); ↓ @TEN = split(/,/, "100, 50, 70");

bazax
質問者

お礼

どうしても$hash{'TEN'}にリストを入れたいのですが、参照などでセットしても無理でしょうか?取り出し方も?です。 このあたりが私にとって未開なので不安です。

関連するQ&A