user3457622
user3457622

Reputation: 59

Store and get values from Perl hash tables

I want to store names in hash or array, which are in format

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

And now I have half information like apple or papaya which I need to look in that hash table and get the full combination apple<->banana and store it in a variable... :)

Hope my question is clear actually i read few hash documents and every where it's mentioned to search with full name ... so I need to search with half name or 1st word.

Upvotes: 2

Views: 164

Answers (2)

Toto
Toto

Reputation: 91373

Assuming your input file is like:

apple<->banana
orange<->papaya

Here is a way to do the job:

#!/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

Upvotes: 1

Sabuj Hassan
Sabuj Hassan

Reputation: 39355

Try this one:

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

Upvotes: 0

Related Questions