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