in reply to non-autovivifing hash

If its just a few keys that get the most usage, and sometimes get misspelled, you could consider using constants for the keys. that way, perl -c will catch and typos in the constant names. For instance:
use constant FIRST_NAME => "first_name"; use constant LAST_NAME => "last_name"; my %some_hash = ( FIRST_NAME() => "john", LAST_NAME() => "doe", ); my $f_name = $some_hash{FRIST_NAME()}; # caught by perl -c my $f_name = $some_hash{"frist_name"}; # autovivifies ...
I'd only use this for a few keys, in general, the other solutions offered are far superior.