my %hash_of_hashes; while () { my @unitfiles_field = split /,/; # this is just an autogen number my $record = $unitfiles_field[0]; my %unitfiles_hash = ( lastname => $unitfiles_field[1], firstname => $unitfiles_field[2], DOB => $unitfiles_field[7], funding => $unitfiles_field[18], URNo => $unitfiles_field[15], Photo_permission => $unitfiles_field[14], ); # add this hash to the hash-of-hashes: $hash_of_hashes{$record_no} = \%unitfiles_hash; } #### my %hash_of_hashes; while () { my @f = split /,/; $hash_of_hashes{$f[0]} = { lastname => $f[1], firstname => $f[2], DOB => $f[7], funding => $f[18], URNo => $f[15], Photo_permission => $f[14], }; } #### my %hash_of_hashes; while () { my %h; (my $rn, @h{ qw(lastname firstname DOB funding URNo Photo_permission) }) = (split /,/)[0,1,2,7,18,15,14]; $hash_of_hashes{$rn} = \%h; }