in reply to STDIN method?

I always like using a hash:
use strict; my %hash=(1=>"Turkey",2=>"Goat",3=>"Fish"); print "choose 1:\n"; for(sort keys %hash){ print "$_=$hash{$_}\n"; } print "Choice: "; my $ans=<STDIN>; chomp $ans; print "Invalid Answer!" unless exists $hash{$ans}; print "You chose $hash{$ans}\n";
This way you only have to change the hash as your selection alternatives change.
-Jason

Replies are listed 'Best First'.
Re: Re: STDIN method?
by charnos (Friar) on Oct 17, 2002 at 20:56 UTC
    That makes the most sense to me too. Plus if you need to scale up your switch statement, it's easy with a hash!
    $hash{1} = sub {print "You chose turkey";}; $hash{2} = sub {print "You chose Goat;"; print "..ew";}; for (keys %hash) { &{$hash{$_}}; }
    ..Obviously for just picking what to print, you're making work for yourself, but if you need to accomplish more than that (which is usually the case), it can save time (without a million elsifs cluttering your code).