了解Selectall_hashref并获取/打印多个列

时间:2013-05-16 05:59:36

标签: mysql perl

我有一个连接到MySQL数据库的PERL脚本,并从表格中的设置标准限制的表格中选择所有数据:

my $hash_ref = $dbh->selectall_hashref($sql, 'Key');

当我后来尊重并打印我的哈希时,我只得到我的Key列进行打印:

print "$_\n" for (sort(keys %$hash_ref));

要获取要打印的SQL表的其他列(我选择的),我需要做什么?我需要分配更多密钥吗?我从根本上没有得到哈希的工作方式吗?

如果它有所不同,第一个$ hash_ref来自一个函数,然后返回到主脚本,并重新输入到打印它的第二个函数。

编辑:更正代码

1 个答案:

答案 0 :(得分:2)

如果您打印keys %$hash_ref,当然只能看到按键!

您可以打印整个哈希,如:

print "$_ -> $hash_ref->{$_}\n" for (sort(keys %$hash_ref));

如果您的哈希是散列哈希值,如评论中所示,您可以打印col1键,如:

print "$_ -> $hash_ref->{$_}->{col1}\n" for (sort(keys %$hash_ref));

要打印任何变量的调试转储,您可能会发现Data::Dumper方便:

use Data::Dumper;
print Dumper($hash_ref);