在Perl中,如何将从数据库中读取的数组转换为哈希?

时间:2010-10-21 12:36:15

标签: arrays perl

基本上,我正在查询数据库,我需要将结果数组转换为哈希值。

我按如下方式查询数据库

my $sth = $dbw->prepare($sql);
while (@rows = $sth->fetchrow_array()) {  
...
...
}

现在,我需要创建一个散列,使得rows [0]是键,行[1],行[2],行[3]是值。对于每个读取的记录,必须生成新的哈希键并设置相应的值

如果我的表格看起来像

abc 2.3 2.4 2.5
def 3.2 3.3 3.4
ijk 4.5 4.6 4.7

读取第一条记录,abc是密钥,数字是值......所以

3 个答案:

答案 0 :(得分:7)

您还可以查看selectall_hashref

$hash_ref = $dbh->selectall_hashref($statement, $key_field);

答案 1 :(得分:6)

my %hash;

while (my @fields = $sth->fetchrow_array()) {  
    $hash{$fields[0]} = [ @fields[1..$#fields] ];
}

答案 2 :(得分:4)

my %mealsizes;
my $sth = $dbw->prepare($sql);
while (@columns = $sth->fetchrow_array()) {  
  my $dayname = shift @columns;
  $mealsizes{$dayname} = [@columns];
}

以下是构建和使用arrayref的说明。

#!/usr/bin/perl
#
use strict;
use warnings;

my %h;
while (<DATA>) {
  my @columns = split;
  my $k = shift @columns;
  $h{$k} = [@columns];
}

for my $k (sort keys %h) {
  print "$k => ", join(', ', @{$h{$k}}), "\n";
}

__DATA__
abc 2.3 2.4 2.5
def 3.2 3.3 3.4
ijk 4.5 4.6 4.7