|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Andrey Sapozhnikov 2:5020/400 03 Apr 2002 16:15:45 To : Artem Chuprina Subject : Re: Hебольшой вопрос -------------------------------------------------------------------------------- С грустью вынужден констатировать тот факт, что мы с интерпретатором Perl на пару облажались. :))) Кто будет глумиться - получит в зубы :)) Конструкция описанная мной, в общем случае не работает. Однако, чтобы отвлечь Ваше внимание от пинания меня ногами, в сторону более плодотворных мыслей приведу кое-какие результаты экспериментов, а уж Вы подумайте над ними: #!/usr/bin/perl -w use strict; my @a; my @b; my @list = qw(aa bb cc ab ac bc 0 0); (/a/?@a:@b) = ($_) foreach @list; # Работает как положено push(1?@a:@b, $_) foreach @list; # Работает, очевидно в силу того, что значение # определилось на этапе компиляции push(/a/?@a:@b, $_) foreach @list; # Error: Type of arg 1 to push must be array (not null operation)... # контроль прототипов не пустил? # Ведь может определить, что это ARRAY (см. пример 1), но не делает. push(@{$_?@a:@b}, $_) foreach @list; # Работает как положено! (если такой конструкции # вообще положено работать :)) push(@{/a/?@a:@b}, $_) foreach @list; # Bizarre copy of ARRAY in leave... # От нифига себе. А в чем разница с предыдущим примером? push(@{/a/?\@a:\@b}, $_) foreach @list; # Работает как положено push(@{\(/a/?@a:@b)}, $_) foreach @list; # И это тоже работает как положено. # "Бессмысленный" reference-dereference # заставил поверить, что это ARRAY? Андрей --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/5284cb7aac24.html, оценка из 5, голосов 10
|