【发布时间】:2011-09-06 08:31:02
【问题描述】:
我在 Perl 中有以下代码,其中哈希引用从主函数传递到 func1,然后传递到 func2。在 func2 中,哈希被更新。我想在主函数中访问更新的哈希。主函数中还有一个while循环,我希望在每次迭代期间都应该更新哈希。代码可能看起来不合逻辑,但我刚刚编写了代码的骨架。当我尝试在主函数中打印散列时,我总是得到空散列
sub main {
my %hash1;
while (some condition)
{
my $i=0;
if($i==0)
{
func1($i,\%hash1);
$i=1;
}
else
{
func1($i,\%hash1);
$i=0;
}
}
foreach my $a (keys %hash1)
{
print "$hash1{$a}";
}
}
sub func1
{
my ($i,$hash1)=@_;
----
if($i==0)
{
func2($hash1);
}
}
sub func2
{
my ($hash2)=@_;
$hash2->{key1}=1;
$hash2->{key2}=2;
}
【问题讨论】:
-
请检查您的代码,因为有一个关闭 } 太多,并且不清楚您的 while 循环从哪里开始以及在哪里结束。
-
谢谢 Erik...我做出了改变
-
纠正缺失的 } 并为您提供的代码提供条件,从而生成工作代码。哈希值已设置。请分享您遇到问题的实际代码。
-
顺便说一句,恕我直言,在 Perl 中使用前导 & 调用 sub - 所以代码应该是 &func1(), ...但亚当是对的。您对问题的抽象对于发现问题和帮助您没有用处。
-
代码对我来说看起来不像是有效的 perl,也没有显示问题。提供一个我们可以复制和调试的工作代码,以便我们可以通过在我们的机器上运行代码来解决您的问题
标签: perl hash hash-reference