次のコードが Perl にあり、ハッシュ参照が main 関数から func1 に渡され、次に func2 に渡されます。func2 ではハッシュが更新されます。メイン関数で更新されたハッシュにアクセスしたい。また、main 関数には 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;
}