2006年01月31日 (火)
配列を一気にハッシュへ変換
配列から、ハッシュに変換したいことが、ときどきありますが、配列から一気にハッシュにする方法をいつも忘れて昔のコードを探してしまうのでメモ。
my %member;
@member{qw(name age)} = qw(takefumi 23);
print Dumper \%member;
ってやると、
$VAR1 = {
'name' => 'takefumi',
'age' => '23'
};
こんな感じ。おぉ便利だ。
たとえば、csvデータをもとに、DBにつっこむスクリプトはこんな感じ。
while(<STDIN>) {
my %member;
@member{qw(name age email)} = split /,/;
MyProject::Data::Member->create(\%member);
}
posted by takefumi
|
この日記へリンク
|
コメント(2)
|
トラックバック(0)
この日記へのトラックバック
この日記へのコメント
DBI なんかで hashref の配列が欲しいときに、
my @array;
$sth->execute();
my $name = $sth->{NAME}; # [ 'id', 'name', 'timestamp' ... ]
while (my $ref = $sth->fetchrow_arrayref) {
my %hash;
@hash{@$name} = @$ref;
push @array, \%hash;
}
ってよくやってます。
fetchrow_hashref よりも速いですし、この変換は使えますよね。
# DBIC やら CDBI 使ってますよね・・・
posted by bonnu at 2010年07月31日 12時57分 #

