我想将名称存储在散列或数组中,格式为
(e.g apple<->banana , orange<->papaya).
现在我有一些信息,如apple or papaya
,我需要查看该哈希表并获得完整组合apple<->banana
并将其存储在变量中......:)
希望我的问题很明确,实际上我读了一些哈希文档以及它提到的所有用全名搜索的地方......所以我需要用半名或第一个字搜索。
答案 0 :(得分:1)
假设您的输入文件如下:
apple<->banana
orange<->papaya
这是一种完成工作的方法:
#!/usr/bin/perl
use strict;
use warnings;
my %corresp;
while(<DATA>) {
chomp;
my ($k, $v) = split/<->/,$_;
$corresp{$k} = $v;
}
my %reverse = reverse %corresp;
my $search = 'apple';
if (exists$corresp{$search}) {
say "$search = $corresp{$search}";
} elsif(exists$reverse{$search}) {
say "$search = $reverse{$search}";
} else {
say 'No match!';
}
__DATA__
apple<->banana
orange<->papaya
答案 1 :(得分:0)
试试这个:
my %hash = (
'apple' => 'banana',
'orange' => 'papaya'
);
## the word is looking for
my $word = 'orange';
## checking using Key
if(defined($hash{$word})){
print "$word <=> $hash{$word}";
}
## checking using value
else{
## handling only one value, not all
my ($key) = grep { $hash{$_} eq $word } keys %hash;
print "$key <=> $hash{$key}" if $key;
}