use strict; use warnings; my %HofA = ( 0 => [ '1;;;;;;;', ';;;;;;;;', ';;;;;;;;', ';;LINE;;SVC;LINE;ACCT;VIEW;', ], 1 => [ '1;;', ';;;', ';;;', ';LINE;;', ], 2 => [ '1;;;;;', ';;;;;;', ';;;LAST;;;', ';UPDT;SRCE;UPDT;UPDT;WORK;', ], ); my @out; for (sort {$a <=> $b} keys %HofA) { my $c; for (@{$HofA{$_}}) { $out[$c++] .= $_; } } print "$_\n" for (@out);