in reply to creating hash of hashes from input file

open FILE, "<", $myfile || die "No open $!\n";
Unrelated to your problem, but this line has a bug. Because of operator precedence, it will not die if the file can not be opened, as you desire. It will only die if $myfile is 0 or undefined. Here is one way to fix the bug:
open FILE, "<", $myfile or die "No open $!\n";

Furthermore, it is now common practice to use lexical filehandles:

open my $fh, '<', $myfile or die "No open $!\n"; while (<$fh>) {

This can be simplified using autodie (part of Core starting with Perl 5.10.1):

use autodie; open my $fh, '<', $myfile; while (<$fh>) {