Wiggins D'Anconia wrote: > > dakenah johnson wrote: > > > > I am trying to write a script that reads names fron standard input and > > matches it to a key in a given table and prints out the name and key > > > > Enter a first name or " <ctrl -z>", to exit > > chomp { $name = <STDIN> }; > > while $name ne " <ctrl-z>" > > if $name is in @given_table > > then > > print "$name maps to $value in given_table" > > else > > print "$name is not in the given_table\n" > > > > what is wrong with this script? > > Well your while should be on the STDIN rather than on the $name. > > Ctrl+z is generally caught by the controlling shell to suspend the > process, so your script is likely never going to receive that particular > entry. > > while (<STDIN>) { > chomp; > if (grep $name, @given_table) {
Well you're pretty close but it should be: if (grep $_ eq $name, @given_table) { > print "$name maps to ..."; > } > } > > Is closer to what you want, in general the process can be killed by the > shell by issuing a ctrl+c so you really shouldn't need to catch the > signal, just instruct the user what to do and let the shell handle it. John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]