如何将哈希传递给Perl子例程?
在我的一个主(或主)例程中,我有两个或更多的散列。我希望子例程foo()将这些可能的多个散列作为不同的散列接收。现在我没有偏好,如果他们去价值,或作为参考。在过去的几个小时里,我一直在努力解决这个问题,非常感谢您的帮助,这样我就不必把perl留给php了!(我正在使用mod_perl,或者将使用它) 现在我对我的要求有了一些答案,如图所示 从 我只想对其进行扩展,以便在dumpvals中可以执行以下操作:如何将哈希传递给Perl子例程?,perl,arrays,hash,reference,arguments,Perl,Arrays,Hash,Reference,Arguments,在我的一个主(或主)例程中,我有两个或更多的散列。我希望子例程foo()将这些可能的多个散列作为不同的散列接收。现在我没有偏好,如果他们去价值,或作为参考。在过去的几个小时里,我一直在努力解决这个问题,非常感谢您的帮助,这样我就不必把perl留给php了!(我正在使用mod_perl,或者将使用它) 现在我对我的要求有了一些答案,如图所示 从 我只想对其进行扩展,以便在dumpvals中可以执行以下操作: foreach my %k ( keys @_[0]) { # use $k an
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";
}
}
- 参数数组的一个元素是标量,因此可以作为
而不是$\u0]
访问它@\u0]
- 键在散列上操作,而不是散列引用,因此您需要使用
%
- 当然,键是标量,不是散列,所以您使用的是
,而不是my$key
my%key
dumpvals
转储传递给它的所有哈希的内容,请使用
sub dumpvals {
foreach my $h (@_) {
foreach my $k (keys %$h) {
print "$k: $h->{$k}\n";
}
}
}
在您的问题中调用时,其输出是
1: 2
3: 4
1: 7
3: 8
1: 5
3: 6
1: 2
3: 4
1: 7
3: 8
1: 5
3:6你应该总是有严格使用;使用警告代码>位于每个脚本和模块的顶部。
1: 2
3: 4
1: 7
3: 8
1: 5
3: 6