[Moscow.pm] А как написать свой sort?

Гришаев Анатолий 0body0 на rambler.ru
Чт Фев 7 01:05:39 PST 2013


07.02.2013 12:55, Гришаев Анатолий пишет:
> 03.02.2013 1:18, Ivan Petrov пишет:
>>
>> то что Монс предложил (и я это пробовал ДО того как задал вопрос в
>> рассылку) у меня дает такой варнинг
>>
>> Name "main::b" used only once: possible typo at test.pl line 11.
>> Name "main::a" used only once: possible typo at test.pl line 11.
>>
>>
>
> А чем не нравиться
>
>     no warnings 'once';
>     @b = my_sort { $a <=> $b } 1, 3, 2;
> ?
В конце концов можно пойти хакерским путем

В пакете
==============
     package B;
     use strict;
     use warnings;
     use Exporter ();
     sub import{
         my $c = caller;
         no strict 'refs';
         undef ${ join "::", $c, 'a' };
         undef ${ join "::", $c, 'b' };
         goto &Exporter::import;
     }

     sub my_sort(&@){
         my ( $cmp, @args ) = @_;
         ...
     }
     BEGIN {
     our @EXPORT_OK = qw(my_sort);
     }
}
=============
А в самом скрипте уже
=============
use strict;
use warnings;
use B qw(my_sort);

my @b = my_sort { $a <=> $b } 1, 3, 2;
=============

Тоже не вызывает warnings 'once';

-- 
С уважением Анатолий.


Подробная информация о списке рассылки Moscow-pm