я перед тем как написать предыд. пост разбирался что ты написал

где знал, где нет - методом тыка и исключений

понял что передаёш ссылку на массив.. предположил что {$arr} это получение массива по ссылке, попробовал его print'ом взять но он не дался

Как функционирует и что как делается понял.. сидел разбирал каждую строку..

понял!

Проблема была в самом синтаксисе.. я его не очень знаю.. а тем более все его варианты

Единственной загадкой для меня осталась конструкция
@{$hash{'a'}}
это что за @?
просто ты написал
@{$hash{$arr->[$i]}} = () if (!defined $hash{$arr->[$i]});
но левая и правая конструкции разные.. в чём?
я б написал так (ессно после твоей подсказки

)

Код:
#!usr/bin/perl
@arr1 = ('aa', 'b', 'c', 'c');
@arr2 = ('bb', 'c', 'a', 'c');
@arr3 = ('cc', '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]}=$i; }
my @result = ();
foreach my $sorted(sort keys %hash)
{
push @result, $hash{$sorted};
delete $hash{$sorted};
}
return @result;
}
можно еще 2 слова о shift'е? просто я знал только @_[] а shift..

ЗЫ: но идея класс

почему мне такая не пришла? :P
ЗЗЫ: Может подскажешь хоть алгоритм как проще реализовать слегка измененную эту задачу.. слегка это: теперь массивы содержат не списки имен/фамилий/.. , а записи, типа @arr1=["Иван","Иванович","Иванов"];@arr2=[]..
