基本上,我正在查询数据库,我需要将结果数组转换为哈希值。
我按如下方式查询数据库
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是密钥,数字是值......所以
答案 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