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.