Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 mystical lexical   Alexander Kostiuchenko   21 Jun 2004 00:09:21 
Архивное /ru.perl/402940d6273e.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional