in reply to Using hash to parse a Flat File

You might want to modify the die in open(FH, "$fn") || die "Cannot open file"; to contain $fn and $! (the returned error-code). At some point, you'll be grateful.