请建议如何比较两个哈希值之间的键值对。 基本上我想检查hash2中是否存在hash1 keyvalue对。
由于
答案 0 :(得分:0)
@pataka:如果有帮助,请查看以下代码:
#!/usr/bin/perl
use strict;
use warnings;
my %hash1 = ( 'Jan' => 1 , 'Feb' => "abc" , 'Mar' => 3);
my %hash2 = ( 'Jan' => 85 , 'Feb' => 44 , 'Mar' => 3 , 'Apr' => 23);
#Same key
foreach my $val1 (keys %hash1)
{
foreach my $val2 (keys %hash2) {
if($val1 eq $val2) {
print $val1 . "\n";
}
}
}
#Same Value
foreach my $val1 (values %hash1)
{
foreach my $val2 (values %hash2) {
if($val1 eq $val2) {
print $val1 . "\n";
}
}
}
#Same Key and Value
foreach my $val1 (keys %hash1)
{
foreach my $val2 (keys %hash2) {
if($val1 eq $val2 && $val1 =~ m/\d+/) {
if($hash1{$val1} == $hash2{$val2}) {
print $val1;
}
}
if($val1 eq $val2 && $val1 =~ m/[A-za-z ]+/) {
if($hash1{$val1} eq $hash2{$val2}) {
print $val1;
}
}
}
}
答案 1 :(得分:0)
@pataka:我没有打印两次,而是对两个字母数字字符串进行比较。所以我打印了一个用于蜇,另一个用于数字。我们也可以这样做,如下所示:
#Same Key and Value
foreach my $val1 (keys %hash1)
{
foreach my $val2 (keys %hash2) {
if($val1 eq $val2) {
if($hash1{$val1} eq $hash2{$val2}) {
print "Key:$val1\t" ;
print "Value:$hash1{$val1}\n";
}
}
}
}