in reply to eval question

The entries were probably not dropped, but overwritten:
$hash{entry} = "will get lost"; $hash{entry} = "this will replace it"; print $hash{entry};
In order to catch the error, you need to change the code that loads the values. Instead of $hash{$key} = $value you might use
die "Error: duplicate value for $key\n" if exists $hash{$key}; $hash{$key} = $value;
See also perldata, or even perldsc on how to store several values at the same key.