私はサブルーチンに渡しているハッシュを持っています。空のハッシュもサブルーチンに渡します。私は空のものにハッシュの内容をコピーしたいと思います。ここでPerlはスカラーをハッシュにコピーします
は私のコードがどのように見えるかです:
my %emptyHash =();
my %sourceHash =();
$sourceHash{'apple'} = 'red';
$sourceHash{'orange'} = 'orange';
mergeHash(\%emptyHash, \%sourceHash);
foreach my $k (keys %emptyHash)
{
print "key=>". $k. "value=>".$emptyHash{$k}. "\n";
}
sub mergeHash {
my $emptyHash = shift;
my $sourceHash = shift;
$emptyHash = $sourceHash;
}
私は、マージ後emptyHashを印刷するとき、私はまだ空のハッシュを取得します。 1つのハッシュの値をこのように別のものにコピーできないのですか?
mergeHash関数の$ emptyHashは、mergeHash関数でのみ使用できます。 $ emptyHashがメイン関数で使用されている場合、$ emptyHashは異なります。したがって、mergeHash関数は$ mergeHashで$ emptyHashを返す必要があります。他の変数に値を代入する必要があります。その後、その変数を使用することができます。 –
さらに、Data :: Dumperモジュールを使用して簡単にデバッグすることができます。 –