Показать сообщение отдельно
Старый 31.01.2004, 00:18
WD` вне форума Посмотреть профиль Отправить личное сообщение для WD` Найти все сообщения от WD`
  № 5  
WD`
 
Аватар для WD`

Регистрация: Sep 2001
Адрес: Кишинёв
Сообщений: 1,516
Отправить сообщение для WD` с помощью ICQ
я перед тем как написать предыд. пост разбирался что ты написал
где знал, где нет - методом тыка и исключений
понял что передаёш ссылку на массив.. предположил что {$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=[]..
__________________
Спирт - враг ваш! Гоните его! | Flash/Flex Blog