[英]Store and get values from Perl hash tables
我想将名称存储在哈希或数组中,其格式应为
(e.g apple<->banana , orange<->papaya).
现在我有一半信息,例如apple or papaya
,我需要在该哈希表中查找并获取apple<->banana
的完整组合,并将其存储在变量中... :)
希望我的问题很清楚,实际上我读了一些哈希文档,并且提到的每个地方都使用全名搜索...,所以我需要使用半名或第一个单词进行搜索。
假设您的输入文件是这样的:
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
试试这个:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.