如何将哈希传递给Perl子例程?

前端之家收集整理的这篇文章主要介绍了如何将哈希传递给Perl子例程?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的一个主要(或主要)例程中,我有两个或更多个哈希.我希望子程序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]来访问.>键操作哈希值,而不是哈希值,因此你需要取消引用,使用%>当然,键是标量,而不是哈希,所以你使用我的$键,而不是我的%键.

猜你在找的Perl相关文章