|
|
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
|