my %h; @h{@array_b} = @array_a; # Now you can sort however you want, and they're linked: for (sort {$a <=> $b} keys %h) { print "$_: $h{$_}\n"; } #### my @sorted_values; @sorted_values[@array_b] = @array_a; # magically sorted! #### # same as above, then @sorted_values = grep defined, @sorted_values;