0

我有一个 PERL 脚本,它连接到 MySQL 数据库,并从受表单中设置条件限制的表中选择所有数据:

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

当我后来尊重并打印我的哈希时,我只会打印我的 Key 列:

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

我需要做什么才能打印 SQL 表的其他列(我选择的)?我需要分配更多的键吗?我从根本上不了解哈希的工作原理吗?

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

编辑:更正的代码

4

1 回答 1

2

如果您 p​​rint 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);
于 2013-05-16T06:06:27.823 回答