in reply to Why am I getting wrong result in basic arithmetic calculations from d5.pl for $calculation1 and $calculation2?
If you use Data::Dumper to print your hash, you might see the bug:
use Data::Dumper; print Dumper( \%vals ); [download]
You need to split your input lines on semicolons before you split on equals signs.
Improve your skills with Modern Perl: the free book.