使用另一个哈希 Perl 的值从哈希输出值



我有两个哈希:

my %hash1 = {
"GOKIN_0_1" => "alpha",
"GOKIN_4_6" => "omega",
....
}
my %hash2 = {
"alpha" => "aaa",
"omega" => "bbb",
...

}

我想做的是,在文件行中打印一个与 hash2 键匹配的 hash1 值,以获得这样的文件:

GOKIN_0_1    aaa  
GOKIN_4_6    bbb
....

这是我的代码部分:

my $v1 = values %hash1;
for my $k1 (keys(%hash1)) {
print OUT "$v1t$hash2{$k1}n";
}

非常感谢。

首先,哈希是用()声明的,而不是{}。后者表示哈希引用

现在,您可以做的是遍历%hash1的键和值,检查该值是否作为键%hash2,然后打印所需的变量(如果该值确实作为键存在(:

use warnings;
use strict;
my %hash1 = (
"GOKIN_0_1" => "alpha",
"GOKIN_4_6" => "omega",
"GOKIN_4_9" => "blah",
);
my %hash2 = (
"alpha" => "aaa",
"omega" => "bbb",
);
while (my ($k, $v) = each %hash1){
if (exists $hash2{$v}){
print "$kt$hash2{$v}n";
}
}

输出:

GOKIN_4_6   bbb
GOKIN_0_1   aaa

所以首先,你的两个哈希值被错误地声明了。您需要常规括号的地方有大括号。打开带有use warnings;的警告应该会突出显示该错误。

my %hash1 = (
"GOKIN_0_1" => "alpha",
"GOKIN_4_6" => "omega",
);
my %hash2 = (
"alpha" => "aaa",
"omega" => "bbb",
);

获得两个哈希后,您可以使用一个 -$hash1{$k1}- 的值作为第二个哈希值的键,就像这样将键$k1链接到第二个哈希值。

for my $k1 (keys(%hash1)) {
print OUT "$k1t$hash2{$hash1{$k1}}n";
}

最新更新