Я бы ввел хэш из сортируемого массива, где ключи - элементы массива, а значения - их индексы... Потом сортируем массив и из хэша получаем отсортированные индексы, зная которые автоматом получаем отсортированные все остальные массивы... во навернул

Лучше на примере:

Код:
@arr1 = ('a', 'b', 'c', 'c');
@arr2 = ('b', 'c', 'a', 'c');
@arr3 = ('c', 'a', 'b', 'c');
@sorted = &sortIndexes(\@arr3);
foreach my $i(@sorted) {
print $arr1[$i]." - ".$arr2[$i]." - ".$arr3[$i]."\n";
}
sub sortIndexes {
my $arr = shift;
my %hash = ();
foreach my $i(0..$#{$arr}) {
@{$hash{$arr->[$i]}} = () if (!defined $hash{$arr->[$i]});
push @{$hash{$arr->[$i]}}, $i;
}
my @result = ();
foreach my $sorted(sort @{$arr}) {
push @result, @{$hash{$sorted}};
@{$hash{$sorted}} = ();
}
return @result;
}