我想制作一个将元素(带值的键)添加到先前定义的哈希的子例程。该子例程在循环中被调用,因此散列增长。我不希望返回的哈希覆盖现有元素。
最后,我想输出整个累积的哈希值。
现在它不打印任何东西。最终的哈希看起来是空的,但那不应该是。我已经尝试过使用哈希引用,但它并没有真正起作用。简而言之,我的代码如下所示:
sub main{
my %hash;
%hash=("hello"=>1); # entry for testing
my $counter=0;
while($counter>5){
my(@var, $hash)=analyse($one, $two, \%hash);
print ref($hash);
# try to dereference the returning hash reference,
# but the error msg says: its not an reference ...
# in my file this is line 82
%hash=%{$hash};
$counter++;
}
# here trying to print the final hash
print "hash:", map { "$_ => $hash{$_}\n" } keys %hash;
}
sub analyse{
my $one=shift;
my $two=shift;
my %hash=%{shift @_};
my @array; # gets filled some where here and will be returned later
# adding elements to %hash here as in
$hash{"j"} = 2; #used for testing if it works
# test here whether the key already exists or
# otherwise add it to the hash
return (@array, \%hash);
}
但这根本不起作用:子例程analyse
接收哈希,但它返回的哈希引用是空的或者我不知道。最后什么都没有打印出来。
首先它说,它不是参考,现在它说:
不能使用未定义的值作为 HASH 引用 在 C:/Users/workspace/Perl_projekt/Extractor.pm 第 82 行。
我的错误在哪里?
我很感谢任何建议。