How to get the correct hash value in perl?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to get the correct hash value in perl?
# 1  
Old 10-05-2011
How to get the correct hash value in perl?

Hi,

I have 2 dummy strings below.

I am creating a hash.

Code:
@str = qw(karnataka,tamilnadu,bihar,mumbai);
@str1 = qw(bangalore,chennai,patna,panaji);
%hash;
for($i=0;$i<=$#str;$i++) {
push @{ $hash{ $str[$i] } }, $str1[$i];
}
foreach $key (keys %hash) {
print "\n KEY: $key --- @{$hash{$key}} \n";
}

OUTPUT:
Code:
 KEY: karnataka,tamilnadu,bihar,mumbai --- bangalore,chennai,patna,panaji

How to print in Key/value pair?

The output should be:
Code:
karnataka - Bangalore
tamilnadu -  chennai
bihar       - patna
mumbai   - panaji

If user specifies karnataka as a key it should output as Bangalore.

Code:
if(key == karnataka )

{

print Bangalore;

}

How can i do this in perl?

REgards

Last edited by pludi; 10-05-2011 at 07:49 AM..
# 2  
Old 10-05-2011
Code:
my %hash = (
        karnataka => 'bangalore',
        tamilnadu => 'chennai',
        bihar => 'bihar',
        maharashtra => 'mumbai'
    );

foreach my $key (keys %hash ) {
        print "$key -- $hash{$key}" . "\n";
    }

# 3  
Old 10-05-2011
You're pushing in the values completely wrong.
Code:
@str = qw(karnataka,tamilnadu,bihar,mumbai);

In this case @str contains only one element, "karnataka,tamilnadu,bihar,mumbai", because qw uses whitespace to split the single elements. So either lose the qw, or replace the commas with a single space character. This also applies to @str1 of course.
# 4  
Old 10-05-2011
Quote:
Originally Posted by pludi
You're pushing in the values completely wrong.
Code:
@str = qw(karnataka,tamilnadu,bihar,mumbai);

In this case @str contains only one element, "karnataka,tamilnadu,bihar,mumbai", because qw uses whitespace to split the single elements. So either lose the qw, or replace the commas with a single space character. This also applies to @str1 of course.
Sure thanks,

How to get this part?

Code:
 if(key == karnataka )

{

print Bangalore;

}

# 5  
Old 10-05-2011
Just read the user input from standard input using the diamond operator (<>), and then use that value to access the hash value there ($hash{key}). You might want to check if the hash has a value defined for a key first.
# 6  
Old 10-06-2011
Code:
#!/usr/bin/perl
my %str = (
        karnataka       =>      'bangalore',
        tamilnadu       =>      'chennai',
        bihar           =>      'patna',
        mumbai          =>      'panaji'
);
while(my($key,$value)= each(%str)) {
        print "$key - $value\n";
}

Code:
[user@storage12 ~]$ perl script.pl
mumbai - panaji
tamilnadu - chennai
karnataka - bangalore
bihar - patna

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Perl: restrict perl from automaticaly creating a hash branches on check

My issue is that the perl script (as I have done it so far) created empty branches when I try to check some branches on existence. I am using multydimentional hashes: found it as the best way for information that I need to handle. Saing multidimentional I means hash of hashes ... So, I have ... (2 Replies)
Discussion started by: alex_5161
2 Replies

2. Shell Programming and Scripting

Compare values of hashes of hash for n number of hash in perl without sorting.

Hi, I have an hashes of hash, where hash is dynamic, it can be n number of hash. i need to compare data_count values of all . my %result ( $abc => { 'data_count' => '10', 'ID' => 'ABC122', } $def => { 'data_count' => '20', 'ID' => 'defASe', ... (1 Reply)
Discussion started by: asak
1 Replies

3. Shell Programming and Scripting

Perl hash help

Hi , i have the below code its working fine when i execute in unix , but its not working in windows could you pls explain me where i am going wrong. This is the program $data = { '1' => 'one' , '2' => 'two' , 3 => 'three' }; print "hello : $data->{'1'}... (2 Replies)
Discussion started by: ragilla
2 Replies

4. Shell Programming and Scripting

perl hash - using a range as a hash key.

Hi, In Perl, is it possible to use a range of numbers with '..' as a key in a hash? Something in like: %hash = ( '768..1536' => '1G', '1537..2560' => '2G' ); That is, the range operation is evaluated, and all members of the range are... (3 Replies)
Discussion started by: dsw
3 Replies

5. Shell Programming and Scripting

Perl Hash:Can not keep hash data in the same order that it was inserted

Can Someone explain me why even using Tie::IxHash I can not get the output data in the same order that it was inserted? See code below. #!/usr/bin/perl use warnings; use Tie::IxHash; use strict; tie (my %programs, "Tie::IxHash"); while (my $line = <DATA>) { chomp $line; my(... (1 Reply)
Discussion started by: jgfcoimbra
1 Replies

6. Shell Programming and Scripting

perl hash

Hi i am reading one file and creating Hash from the contents of it my issue is there are 3 different files in 3 different locations having same structure so for parsing these files i have one subroutine which returns hash after reading all the 3 files i need to create consolidated hash from three... (2 Replies)
Discussion started by: zedex
2 Replies

7. Shell Programming and Scripting

perl hash

This is my data 1 0 1 0 1 1 1 2 1 6 1 7 Assume that first field is key and 2nd field is value I want to create a hash in perl, on this data. My hash should having uniq key and all values by , separated. 1,0,0,1,2,6,7 1 will be my key and rest of are should be values. (3 Replies)
Discussion started by: pritish.sas
3 Replies

8. Shell Programming and Scripting

perl using hash

i want to ask is it i can use hash in perl to store a page number with a list of words which is in that page and then print it out? Example Page 1 contains a are boy cat ............. (a list of sorted words) how can i store it in a hash? Thank you (3 Replies)
Discussion started by: mingming88
3 Replies

9. Shell Programming and Scripting

perl help on hash

I have line which is read from xml doc. I want to put this line into hash(perl variable). find line below and how i want to put this in hash <font size="10" type="int" name="ABC" > hash key should be size, type and name with corresponding value I doing as below:- $line =~ s/\s*.*?\s//;... (3 Replies)
Discussion started by: aju_kup
3 Replies

10. Shell Programming and Scripting

Perl Hash

hi i have two hash achi %disk1,%disk2 with( key, value) (key1,value1) How to store it in another hash.. Plz replyyy. Regards Hari (1 Reply)
Discussion started by: Harikrishna
1 Replies
Login or Register to Ask a Question