|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Igor Gerdler 2:5020/400 04 Apr 2002 12:22:36 To : Andrey Sapozhnikov Subject : Дополнения -------------------------------------------------------------------------------- Добрый день, уважаемый Андрей! Дополняю Ваши экспериментальные данные своими результатами: > #!/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; > # Работает как положено Я получил: @list: aa bb cc ab ac bc 0 0 @a: ac @b: 0 > push(1?@a:@b, $_) foreach @list; > # Работает, очевидно в силу того, что значение > # определилось на этапе компиляции @list: aa bb cc ab ac bc 0 0 @a: aa bb cc ab ac bc 0 0 @b: > 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; > # Работает как положено! (если такой конструкции > # вообще положено работать :)) @list: aa bb cc ab ac bc 0 0 @a: aa bb cc ab ac bc @b: 0 0 > push(@{/a/?@a:@b}, $_) foreach @list; > # Bizarre copy of ARRAY in leave... > # От нифига себе. А в чем разница с предыдущим примером? > > push(@{/a/?\@a:\@b}, $_) foreach @list; > # Работает как положено @list: aa bb cc ab ac bc 0 0 @a: aa ab ac @b: bb cc bc 0 0 > push(@{\(/a/?@a:@b)}, $_) foreach @list; > # И это тоже работает как положено. > # "Бессмысленный" reference-dereference > # заставил поверить, что это ARRAY? @list: aa bb cc ab ac bc 0 0 @a: aa ab ac @b: bb cc bc 0 0 --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/6577d25db01e.html, оценка из 5, голосов 10
|