我有一个连接到MySQL数据库的PERL脚本,并从表格中的设置标准限制的表格中选择所有数据:
my $hash_ref = $dbh->selectall_hashref($sql, 'Key');
当我后来尊重并打印我的哈希时,我只得到我的Key列进行打印:
print "$_\n" for (sort(keys %$hash_ref));
要获取要打印的SQL表的其他列(我选择的),我需要做什么?我需要分配更多密钥吗?我从根本上没有得到哈希的工作方式吗?
如果它有所不同,第一个$ hash_ref来自一个函数,然后返回到主脚本,并重新输入到打印它的第二个函数。
编辑:更正代码
答案 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);