在我的一个主要(或主要)例程中,我有两个或更多个哈希.我希望子程序foo()接收这些可能的多个哈希值作为不同的哈希值.现在我没有偏好,如果他们按价值或作为参考.我在最近几个小时内一直在努力,并且会感谢帮助,所以我不必为
PHP留下perl! (我正在使用mod_perl,或将是)
现在我已经得到了一些答案,如图所示
从http://forums.gentoo.org/viewtopic-t-803720-start-0.html起
# sub: dump the hash values with the keys '1' and '3' sub dumpvals { foreach $h (@_) { print "1: $h->{1} 3: $h->{3}\n"; } } # initialize an array of anonymous hash references @arr = ({1,2,3,4},{1,7,8}); # create a new hash and add the reference to the array $t{1} = 5; $t{3} = 6; push @arr,\%t; # call the sub dumpvals(@arr);
我只想扩展它,以便在转储中我可以做这样的事情:
foreach my %k ( keys @_[0]) { # use $k and @_[0],and others }
语法错误,但我想你可以告诉我我正在尝试获取第一个哈希(hash1或h1)的密钥,并迭代它们.
如何在上面的代码片段中执行此操作?
解决方法
我相信这就是你要找的东西:
sub dumpvals { foreach my $key (keys %{$_[0]}) { print "$key: $_[0]{$key}\n"; } }
>参数数组的一个元素是标量,因此您可以将其作为$_ [0]而不是@_ [0]来访问.>键操作哈希值,而不是哈希值,因此你需要取消引用,使用%>当然,键是标量,而不是哈希,所以你使用我的$键,而不是我的%键.