in reply to Sorting multiple arrays

What you have is essentially a hash. array_b is your keys, array_a is your values:
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"; }
If array_b starts at zero and doesn't skip values, you can use an array similarly:
my @sorted_values; @sorted_values[@array_b] = @array_a; # magically sorted!
If it skips some values (but doesn't range into absurdly high numbers) and/or doesn't start at zero, you can grep out the undefs (assuming you don't have valid undef values):
# same as above, then @sorted_values = grep defined, @sorted_values;

Caution: Contents may have been coded under pressure.