in reply to uninitialized value loading into hash and printing

You have trailing newlines in your data (and extraneous quotes) so you need to access qq["andrew\n"] to get the "10\n". But obviously a much better idea would be to do away with the newlines altogether with a chomp and also drop the quotes e.g
my %hash = map { chomp; s{ ^" | "$ }()xg; $_ } <DATAFILE>;
This builds a list where every element has been chomped and the beginning and ending quote removed and then assigns it to %hash. See. map and perlre for more info.
HTH

_________
broquaint

update (broquaint): deal with the quotes too