gpt4 book ai didi

perl - 如何将散列传递给 Perl 子例程?

转载 作者:行者123 更新时间:2023-12-05 00:06:59 25 4
gpt4 key购买 nike

在我的主要(或主要)例程之一中,我有两个或多个哈希。我希望子例程 foo() 将这些可能有多个哈希值作为不同的哈希值接收。现在我没有偏好它们是按值(value)还是作为引用。在过去的几个小时里,我一直在为此苦苦挣扎,希望得到帮助,这样我就不必为 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,3,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);

我只想扩展它,以便在 dumpvals 中我可以做这样的事情:
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] .
  • 键对散列进行操作,而不是散列引用,因此您需要使用 % 取消引用
  • 当然,键是标量,而不是散列,所以你使用 my $key ,不是 my %key .
  • 关于perl - 如何将散列传递给 Perl 子例程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2527925/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com