我有一个 PERL 脚本,它连接到 MySQL 数据库,并从受以下形式的设定条件限制的表中选择所有数据:
my $hash_ref = $dbh->selectall_hashref($sql, 'Key');
当我稍后遵从并打印我的哈希值时,我只打印我的 Key 列:
print "$_\n" for (sort(keys %$hash_ref));
我需要做什么才能打印 SQL 表的其他列(我选择的列)?我需要分配更多键吗?我从根本上不明白哈希是如何工作的吗?
如果有区别,第一个 $hash_ref 来自一个函数,然后返回到主脚本,并重新输入到打印它的第二个函数中。
编辑:更正代码
最佳答案
如果您打印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);
关于mysql - 了解 Selectall_hashref 并获取/打印多于 1 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16579986/