繁体   English   中英

从Perl哈希表存储和获取值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM