my %HASH; while () { chomp; $HASH{substr($_,2,8)}{substr($_,12,9)} = $_; } foreach my $col_2_num (sort keys %HASH) { foreach my $col_3_num (sort keys %{ $HASH{$col_2_num} }) { print "$col_2_num : $col_3_num : '$HASH{$col_2_num}{$col_3_num}'\n"; } }