for( my $i = 0; $i <= $#columns; $i++){ push @{$first{$t_name}{$tab}{$sp}} , $columns[$i] ; } for my $fr ( sort keys %first ) { for my $tg ( sort keys %{ $first{$fr} }) { for my $ab ( sort keys %{ $first{$fr}{$tg} }) { foreach my $rt ( @{$first{$fr}{$tg}{$ab}}){ my $val = $first{$fr}{$tg}{$ab}{$rt} ; print " print $fr, $tg, $ab, $first{$fr}{$tg}{$ab}{$rt} "; } } } }