my @array1 = qw/this that those these/; my @array2 = qw/2 3 1 4/; my @sorted = map { $_->[1] } sort { $a->[0] <=> $b->[0] } map { [$array2[$_] , $array1[$_]] } 0 .. $#array2; { local $" = "\t"; print "@array1\n"; print "@sorted\n"; }