概要
CSVファイルを読み込み、それを配列のハッシュにする方法について簡単にまとめます。よみこむファイル
住所録や名簿てきなものではなく、キーによっては要素数が変わるようなものを想定してます。ベアーズ,山田、鈴木、佐藤、
タイガース、田中、中田、中島、トム
ライオンズ、マイケル、ジャクソン、トーマス、ディック
住所録的なものはこちらで、
http://codezine.jp/article/detail/904?p=1
コード
my %hash; foreach my $line( @list ) { chomp $line; my ( $key, @items ) = split( /,/, $line ); $hash{$key} = [@items]; }
ポイント(苦労した点)は9行目と10行目です。
まずは、my ( $key, @items ) = split( /,/, $line );です。
このような書き方で、CSVの最初の文字列を$keyという変数に、
2つ目の文字列以降を配列に代入することができます。
次に、$hash{$key} = [@items];です。
これでハッシュにキーとアイテム(配列)を追加しています。
※とりあえず動いてます。
コード(全部)
use strict; use warnings; #------------------------- open(FH," < team.csv"); my @list =; close(FH); my %hash; foreach my $line( @list ) { chomp $line; my ( $key, @items ) = split( /,/, $line ); $hash{$key} = [@items]; } printhash( %hash ); #------------------------- sub printhash { my %hash = @_; foreach my $key( keys( %hash ) ) { print "キー値 : $key\n"; my @val = @{$hash{$key}}; my $length = @val; print "length =$length\n"; print "val = @val\n"; } }
出力結果
キー値 : タイガースlength =4
val = 田中 中田 中島 トム
キー値 : ベアーズ
length =3
val = 山田 鈴木 佐藤
キー値 : ライオンズ
length =4
val = マイケル ジャクソン トーマス ディック
0 件のコメント:
コメントを投稿