Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/400     28 Sep 2003  13:45:33
 To : Andrew Degtiariov
 Subject : Re: Реализация своей функции sort
 -------------------------------------------------------------------------------- 
 
 Хмутро.
 
 AD> Добрый день.
 AD> Есть у меня небольшой класс, реализующий двусвязный список. Есть в нем
 AD> метод sort. Захотел я, чтобы он, как системная функция sort в качестве
 AD> параметра воспринимал конструкции вида {$b cmp $a}. Все хорошо
 AD> работает под perl 5.6 и 5.8. А на 5.005 ругается: 
 AD> ad@odin:traffcount-0.5>perl tests/test_chains.pl
 AD> Can't declare scalar deref in my at lib/chains.pm line 241, near "} ="
 AD> BEGIN failed--compilation aborted at tests/test_chains.pl line 3.
 AD> ad@odin:traffcount-0.5>
 
 AD> Вот "сбойный" участок:
 AD>         my $_a = $self->{'current'};
 AD>         my $_b = $_a->{'next'};
 
 AD>         my $a = $_a->{'data'};
 AD>         my $b = $_b->{'data'};
 AD>         my $rv;
 
 AD>         if (ref $code eq 'CODE') {
 AD>             my ($package) = caller;
 AD>             my ${$package ."::a"} = $a; # Это 241 строка
 AD>             my ${$package ."::b"} = $b;
 AD>             $rv = eval { &$code };
 AD>         }
 AD> Подскажите как выйти из ситуации. Может у меня неправильная реализация?
 
 Может быть, я ошибусь, и меня поправят более опытные товарищи, но зачем тебе
 вкручивать их в пакет вызывающего? Сколь я помню, $a и $b - они из main, и
 тебе бы надо сказать local $a = $_a->{'data'}; ...
 
 -- 
 Artem Chuprina
 RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757
 --- ifmail v.2.15dev5
  * Origin: Leninsky 45 home network (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Реализация своей функции sort   Artem Chuprina   28 Sep 2003 13:45:33 
Архивное /ru.perl/114778c37ddbb.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional