存储并从Perl哈希表中获取值

时间:2014-04-01 07:29:51

标签: perl

我想将名称存储在散列或数组中,格式为

(e.g apple<->banana , orange<->papaya).

现在我有一些信息,如apple or papaya,我需要查看该哈希表并获得完整组合apple<->banana并将其存储在变量中......:)

希望我的问题很明确,实际上我读了一些哈希文档以及它提到的所有用全名搜索的地方......所以我需要用半名或第一个字搜索。

2 个答案:

答案 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;
}