my $i=0; my @sorted_indexes=map {$_->[1]}sort{ $a->[0] <=> $b->[0] }map{[$_,$i++]}@array; foreach my $d(@sorted_indexes){ print $d."\t".$array[$d]."\n"; }