lenti214 [~/perltest]>more hash2.pl #!/usr/bin/perl -w # # assign keys and values to a hash # keys = 1 letter codes, values = aa names %aa_codes = ("A" => "alanine", "R" => "arginine", "D" => "aspartate", "N" => "asparagine", "C" => "cysteine", "E" => "glutamate", "Q" => "glutamine", "G" => "glycine", "H" => "histidine", "I" => "isoleucine", "L" => "leucine", "K" => "lysine", "M" => "methionine", "F" => "phenylalanine", "P" => "proline", "S" => "serine", "T" => "threonine", "Y" => "tyrosine", "W" => "tryptophan", "V" => "valine"); # assign keys and values to a hash # keys = 1 letter codes, values = codes for aa properties %aa_props = ("A" => "tsn", "R" => "pc+", "D" => "scp-", "N" => "sp", "C" => "stap", "E" => "cp-", "Q" => "p", "G" => "st", "H" => "n+cpr", "I" => "an", "L" => "an", "K" => "+cpn", "M" => "n", "F" => "rn", "P" => "s", "S" => "tsp", "T" => "tsp", "Y" => "rnp", "W" => "rnp", "V" => "ans"); # keys = aa property codes, values = full name of properties %prop_names = ("a" => "aliphatic", "s" => "small", "t" => "tiny", "r" => "aromatic", "n" => "non-polar", "p" => "polar", "+" => "positive", "-" => "negative", "c" => "charged"); # start of main program loop $again = "y"; until ($again ne "y") { # get code from user print "\nEnter a single letter amino acid code: "; chomp ($code = ); $code = uc ($code); # if legal print code, aa name and properties, else print message if (defined ($aa_codes{$code})) { print $aa_codes{$code}, " ", $code, " ", $aa_props{$code}, "\n\n"; } else { print "$code is not a legal code.\n\n"; } # end main program loop print "Again (y/n)? "; chomp ($again = ); $again = lc ($again); $again = substr ($again,0,1); } exit; lenti215 [~/perltest]>perl hash2.pl Name "main::prop_names" used only once: possible typo at hash2.pl line 25. Enter a single letter amino acid code: a alanine A tsn Again (y/n)? y Enter a single letter amino acid code: h histidine H n+cpr Again (y/n)? y Enter a single letter amino acid code: b B is not a legal code. Again (y/n)? n lenti216 [~/perltest]>