-2
問題が残っています。私は2つのハッシュの参照を作成しようとしているし、サブルーチンでそれらを比較します。しかし、エラーがあります:サブルーチンにハッシュリファレンスを渡す方法
compareHashes.plラインでHASHリファレンスとして未定義の値を使用することはできません10.
私のコードは次のとおりです。
use strict;
use warnings;
use feature qw(say);
my $hash_1; my $hash_2;
compareHashes($hash_1, $hash_2);
sub compareHashes{
say "the first hash:", "\n", %$hash_1;
say "the second hash:", "\n", %$hash_2;
if ((keys(%$hash_1) eq keys(%$hash_2)) and (values(%$hash_1) eq values(%$hash_2))){
say "Two above hashes are equal";}
else {
say "Two above hashes are not equal";
}
};
my %hash1 = (ITALY => "ROME",
FRANCE => "PARIS"
);
my %hash2 = (ITALY => "MILAN",
FRANCE => "PARIS"
);
my %hash3 = (ITALY => "ROME");
my %hash4 = (SPAIN => "ROME",
FRANCE => "PARIS"
);
my $hash1_r = \%hash1;
my $hash2_r = \%hash2;
my $hash3_r = \%hash3;
my $hash4_r = \%hash4;
compareHashes ($hash1_r, $hash1_r);
compareHashes ($hash1_r, $hash2_r);
compareHashes ($hash1_r, $hash3_r);
compareHashes ($hash1_r, $hash4_r);
何が間違っているを教えてください。私はあなたの助けに感謝します。
$ hash_1または$ hash_2に値を割り当てなかったため、未定義ですか? –
多分私はsayを定義します。印刷物を使用してみてください。 –
はい。私は4つの "本当の"ハッシュを比較しようとしています。 –