# Problem with a string

D

#### Default

When I enter two out of range values I get unexpected results.
eg: -20 and 20
gives this for output: Negative plus equals zero

Here is the program (sorry for my noobness).
Thank you for any help.
Sorry if this is a double post, im new to posting nntp also : |

#!
hash_one ();
print "\n" . "="x80;
print "Takes two numeric values from -9 to 9 adds them then returns the English names.";
print "\n" . "="x80 . "\n\n";
until ((\$key1 eq "end") || (\$key2 eq "end"))
{
\$neg1 = ""; # Im doing this to try to fix the problem
\$neg2 = ""; #
\$neg3 = ""; # o 0
\$key1 = ""; # _
\$key2 = ""; #
\$key3 = ""; #
print "Enter a number (0-9):\t\t";
chomp (\$key1 = <STDIN>);
print "Enter another number (0-9):\t";
chomp (\$key2 = <STDIN>);
\$key3 = (\$key1 + \$key2);
if (\$key1 < 0)
{
\$neg1 = "negative ";
\$key1 = (- \$key1);
}
if (\$key2 < 0)
{
\$neg2 = "negative ";
\$key2 = (- \$key2);
}
if (\$key3 < 0)
{
\$neg3 = "negative ";
\$key3 = (- \$key3);
}
lookup_one (\$key3);
}
#####
sub lookup_one
{
if ((\$key1 eq "end") || (\$key2 eq "end"))
{
print "\nEnding program\n";
last
}
if (\$hash_one{\$key3})
{
\$output1 = \$neg1 . \$hash_one{\$key1} . " plus " . \$neg2 . \$hash_one{\$key2} . " equals " . \$neg3 . \$hash_one{\$key3};
print "\n\u\$output1\n\n";
}
else
{
\$output2 = \$neg1 . \$key1 . " plus " . \$neg2 . \$key2 . " equals " . \$neg3 . \$key3;
print "\n\u\$output2\n\n";
}

}
sub hash_one
{
%hash_one = qw(
0 zero
1 one
2 two
3 three
4 four
5 five
6 six
7 seven
8 eight
9 nine
10 ten
11 eleven
12 twelve
13 thirteen
14 fourteen
15 fifteen
16 sixteen
17 seventeen
18 eighteen
19 nineteen);
}

G