Perl 中 %hash and \%hash 作为参数的区别

Perl 中 %hash and \%hash 作为参数的区别

说明

When you pass %hash, Perl passes a possibly large number of elements to the called function, which correspond to the key/value pairs.
When you pass \%hash, Perl passes a reference to a hash - essentially the address of the hash.

当你传递 %hash 时,Perl 会向被调用的函数传递大量元素,这些元素对应于键/值对。
当你传递\%hash时,Perl传递对哈希的引用 - 本质上是哈希的地址

my %hash = ( Key1 => "Value1", Key2 => "Value2" );
sub counter
{
    printf "Count: %d\n", scalar(@_);
}
counter(%hash);
counter(\%hash);

结果:

Count: 4
Count: 1

There are multiple ways you can get at the data:

sub hashref
{
    my($ref) = @_;
    foreach my $key (keys %{$ref})
    {
         print "$key: $ref->{$key}\n";
    }
}

sub hashnonref
{
    my(%hash) = @_;
    foreach my $key (keys %hash)
    {
        print "$key: $hash{$key}\n";
    }
}

sub hashasarray
{
    my(@array) = @_;
    foreach my $value (@array)
    {
         print "Value: $value\n";
    }
}

hashref(\%hash);   # Same data as before
print "\n";
hashnonref(%hash);
hashasarray(%hash);

结果:

Key2: Value2
Key1: Value1

Key1: Value1
Key2: Value2

Value: Key2
Value: Value2
Value: Key1
Value: Value1

参考

https://perldoc.perl.org/perlreftut
https://perldoc.perl.org/perlref

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值