in reply to Comparing Hash's key to an <STDIN> and print it's corresponding value

Your code executes just fine for me; specifically I get:

user@localhost:~/sandbox$ perl script.pl Enter a name to print it's family name : Alis Alis is already there, and its family name is Williams user@localhost: +~/sandbox$

How are you attempting to interact with it?

On a side note, hashes are wonderful tools, but you are not using them to their greatest advantage. To quote a great man:

Doing linear scans over an associative array is like trying to club someone to death with a loaded Uzi. -- TimToady

Rather than what you've written, I would use code more like:

#!/usr/bin/perl -w use strict; my %family_name = ( "Alis" => "Williams", "Sara" => "McAwesome", "Serena" => "Anderson", ); print "Enter a name to print it's family name : \n"; chomp(my $name= <STDIN>); if (exists $family_name{$name}) { print "$name is already there, and its family name is $family_name +{$name} "; } else { print "I don't know anyone by the name $name\n"; }

See exists for info on the exists function and perldata for info on what data types (including hashes) Perl has to offer.

Replies are listed 'Best First'.
Re^2: Comparing Hash's key to an <STDIN> and print it's corresponding value
by xxArwaxx (Novice) on Apr 07, 2011 at 12:55 UTC
    I guess you can blame it on me working on Padre at home, the Perl editor for Mac OS, while at work, I use the EngInSite editor for Win machines, it happens that in Padre, it only generates the errors but when done fixing them, it runs NOTHING! I noticed that only if there's a line with an <STDIN> ! so I'd run it from the Terminal instead, the old fashion way of running a Perl script! that quote is just a great piece of advice to keep in mind in future programming practice! I also loved the alternative solution you've provided! represents efficiency and simplicity all together at the same time! thanks for the reply!