のみまくし日記

毎日が文化祭の前日、そんな環境っていいですよね。この日記は未来の自分へのメッセージです。

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);
}

Perl メモ 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 2008年10月12日 00時58分 #

DBIなら(しばらく触ってないので忘れたけど)

 while(my $ref = $sth->fetchrow_hashref) {
  push(@array, $ref);
 }

でいけないかしら?

でも、そういう話ではないです。はい。

posted by きむら at 2008年10月12日 00時58分 #