概要
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 = <fh>;
- 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";
- }
- }
- </fh>
出力結果
キー値 : タイガースlength =4
val = 田中 中田 中島 トム
キー値 : ベアーズ
length =3
val = 山田 鈴木 佐藤
キー値 : ライオンズ
length =4
val = マイケル ジャクソン トーマス ディック
0 件のコメント:
コメントを投稿