|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Alexander Kostiuchenko 2:463/672.419 21 Jun 2004 00:09:21 To : All Subject : mystical lexical --------------------------------------------------------------------------------
Расклад такой: в обработчике аттрибута к функции добавляется пред-обработчик,
пытающийся (с помощью PadWalker) установить ее лексические переменные. Hо -
этого не происходит. Причем если для переменных my1..3 это еще можно понять, то
для my4, которая статическая и не должна инициализироваться повторно, такое
поведение не совсем понятно. Смена стадии установки аттрибута ничего не дает (а
если BEGIN поставить, так вообще вместо ссылки на функцию в таблице символов
получаем ANON - еще один момент неясный). Может кто обьяснит подобное поведение
? Код примерно следующий:
use Attribute::Handlers;
use PadWalker 'peek_sub';
sub X : ATTR(CODE,INIT) {
my ($pkg,$sym,$code,@rest) = @_;
*$sym = sub {
my $h = peek_sub($code);
${$h->{$_}} = 777 for map { "\$my$_" } (1..4);
print "Going... ";
goto &$code;
};
}
sub test : X {
my $my1 = 10;
my $my2;
our $my3;
my $my4 if 0;
print " $my1 : $my2 : $my3 : $my4";
}
test();
--
mailto: random at binet.kiev.ua //Александр
---
* Origin: useless (2:463/672.419)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/402940d6273e.html, оценка из 5, голосов 10
|