Hi all,

I recently had one requirement where I needed to get the key in a hash on
the basis of supplied value.

There is one additional information that there is one to one mapping between
the keys and the values.

I was able to do that by defining a extra array and hash variables as shown
in the program below but I feel this approach will not work for all
scenarios like :-

1. When the value of a particular key is undef in the original hash.

2. When there are nested data structures.

I have pasted the program as well as the output over here.

*Prompt#* *cat test_hash_reverse.pl*
#! /usr/bin/perl

use strict;
use warnings;

my %h1 =
        (
                "N" => "North",
                "E" => "East",
                "W" => "West",
                "S" => "South",
                "C" => "Central"
        );

print "The Hash h1 is printed below :-\n";

foreach my $var1 (keys %h1)
{
        print "\t[$var1] => [$h1{$var1}]\n";
}

my @arr1 = %h1;

print "The Array arr1 as initialized from the Hash h1 is printed below
:-\n";

print "@arr1\n";

my @arr2 = reverse (@arr1);

print "The Array arr2 as initialized from the reverse of the Array arr1 is
printed below :-\n";

print "@arr2\n";

my %h2 = @arr2;

print "The Hash h2 as initialized from the Array arr2 is printed below
:-\n";

foreach my $var2 (keys %h2)
{
        print "\t[$var2] => [$h2{$var2}]\n";
}

*Prompt #* *perl test_hash_reverse.pl*
The Hash h1 is printed below :-
        [S] => [South]
        [W] => [West]
        [C] => [Central]
        [N] => [North]
        [E] => [East]
The Array arr1 as initialized from the Hash h1 is printed below :-
S South W West C Central N North E East
The Array arr2 as initialized from the reverse of the Array arr1 is printed
below :-
East E North N Central C West W South S
The Hash h2 as initialized from the Array arr2 is printed below :-
        [West] => [W]
        [Central] => [C]
        [South] => [S]
        [North] => [N]
        [East] => [E]
*Prompt #*



Thanks & Regards,
Amit Saxena

Reply via email to