如何将数组与哈希记录进行比较并检索匹配值? (来自键/值对)

时间:2014-08-27 20:00:13

标签: arrays perl hash

 foreach(@orphans1)
    {
        if(exists ($hash2{$_}))
        {
        my $values = values %hash2{$_};
        print "\n\n YES INSIDE THE LOOP: $values";
        }
    }
  

孤儿是我存储用户名的数组。我必须   比较孤儿记录并找出hash => hash2 I中的匹配键   能够比较和获取hash2中存在的密钥。

     

但是当我尝试检索相应的代码时,此代码无效   值。

     

示例数据:Hash2包含=> {ASE,UK} {CCY,US} {PSD,US} {ZK9,UL}

     

孤儿包含=> ZK9,ASE

2 个答案:

答案 0 :(得分:1)

这是我写的方式:

use warnings;
use strict;

my @orphans1 = qw(ZK9 ASE);

my %hash2 = ('ASE' => 'UK', 'CCY' => 'US', 'PSD' => 'US', 'ZK9' => 'UL');

foreach(@orphans1){
print "In hash! key: $_ value: $hash2{$_}\n" if $hash2{$_};
}

In hash! key: ZK9 value: UL
In hash! key: ASE value: UK

答案 1 :(得分:0)

下一个:

use 5.010;
use warnings;
use Data::Dumper;

my @orp = qw(ZK9 ASE);
my %hash = ('ASE' => 'UK', 'CCY' => 'US', 'PSD' => 'US', 'ZK9' => 'UL');

my @o = @hash{@orp};  #values hash slice
say "@o";

打印

UL UK

那就是你想要的吗?

或者:

use 5.020;      #need 5.20
use warnings;
use Data::Dumper;

my @orp = qw(ZK9 ASE);
my %hash = ('ASE' => 'UK', 'CCY' => 'US', 'PSD' => 'US', 'ZK9' => 'UL');

my %h = %hash{@orp}; #key/value hash slice
say Dumper \%h;

打印

$VAR1 = {
          'ZK9' => 'UL',
          'ASE' => 'UK'
        };
相关问题