|
|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/114778c37ddbb.html, оценка из 5, голосов 10
|