On Tue, Nov 25, 2008 at 10:59 PM, Rob Dixon <[EMAIL PROTECTED]> wrote:

> Amit Saxena wrote:
> > 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]
>
Hi Rob,
My question is that is there any scenario where my solution fails ?
Thanks & Regards,
Amit Saxena

>
> > *Prompt #*
> >
> >
>
> You may as well just say
>
>  my %h2 = reverse %h1;
>
> but what is your question?
>
> Rob
>

Reply via email to