小编Eri*_*jen的帖子

perl传递哈希引用不符合预期

(注意:我有点想到这一点,最后一路看到)

这有点晚了,我一直盯着这段代码太久了.我终于写了一个简短的测试程序来测试哈希并通过引用传递它们,它的行为并不像我期望的那样.我确信有一些非常简单的东西我很想念...有人能发现吗?

#!/usr/bin/perl
use Data::Dumper;

my %hash = ();
print "BEFORE ADDING KEYS\n";
print Dumper (\%hash);
test (\%hash, 10);
print "AFTER ADDING KEYS\n";
print Dumper (\%hash);

sub test {

 my %hash = %{$_[0]};
 my $number = $_[1];
 if ($number == 0) { return; }

 print "BEFORE ADDING KEY HASH_REF=$_[0] NUMBER=$number\n";
 print Dumper (\%hash);
 $hash{$number} = $number;
 print "AFTER ADDING KEY\n";
 print Dumper (\%hash);    
 test ($_[0], $number - 1);
}
Run Code Online (Sandbox Code Playgroud)

我希望这段代码将数字10到1添加到我的哈希中,但是一旦测试例程完成递归,哈希就会被删除并且不包含任何内容.我错过了什么?这是输出:

BEFORE ADDING KEYS
$VAR1 = {};
BEFORE ADDING …
Run Code Online (Sandbox Code Playgroud)

perl hash reference pass-by-reference

2
推荐指数
1
解决办法
79
查看次数

标签 统计

hash ×1

pass-by-reference ×1

perl ×1

reference ×1