[Moscow.pm] Эх .. знали бы что у перла внутри - перешли бы на питон.

Orlovsky Alexander nordicdyno на yandex.ru
Ср Дек 10 01:53:24 PST 2008


У меня (i686 athlon i386 GNU/Linux) компилится, а приведенный скрипт после запуска говорит:
Unprotect newref failed: Unknown error 4294967295

09.12.08, 21:37, "Vany Serezhkin" <ivan на serezhkin.com>:

> Привет.
> Помнится я Монсу обещал показать как "Это" и "Не множко другой перл"
> Вот такая программа :
> #!/usr/bin/perl
> use strict;
> use Refmonitor;
> my $a=new RefWatcher;
> my @b=(\$a)x4;
> while (@b) {
>     print "Start another undef\n";
>     shift @b;
> }
> print "Done Undef\n";
> die;
> package RefWatcher;
> sub new {print "new RefWatcher\n"; return bless {junk=>'somedata'};}
> sub REFCHANGE {
>     my ($self, $references)=@_;
>     my $There_is_safe_to_reference_self=\$self;
>     undef $There_is_safe_to_reference_self; # and dereference
>     print "$self -> REFCHANGE() now $references references\n";
> }
> Делает :
> vany:~/src/refmonitor$perl test.pl
> new RefWatcher
> RefWatcher=HASH(0x2850c54c) -> REFCHANGE() now 5 references
> Start another undef
> RefWatcher=HASH(0x2850c54c) -> REFCHANGE() now 4 references
> Start another undef
> RefWatcher=HASH(0x2850c54c) -> REFCHANGE() now 3 references
> Start another undef
> RefWatcher=HASH(0x2850c54c) -> REFCHANGE() now 2 references
> Start another undef
> RefWatcher=HASH(0x2850c54c) -> REFCHANGE() now 1 references
> Done Undef
> Died at test.pl line 12.
> В результате написания этого безобразия которое "давайте в  репозитории 
> этого не будет" (с) ... начальник нашего репозитория.
> Пришлось понять как работает i386, att asm, gdb и ещё куча матерных слов.
> То что мэджиком, как я надеялся, туда не попасть, и на скаляр типа 
> объект SvROK говорит что не RV.
> Вообщем я не знаю как к всему этому относится, макрос на макросе и 
> макросом погоняет.
> Большинство макросов не экспортированы, а нужны при хаченьи перла, 
> пришлось копипастить.
> Вообщем всё в аттаче, раскажите, работает ли на линуксе и на amd64 - 
> вроде получилось кросплатформенно, правда пока только для интела.
> И ещё, место ли такой упячке на цпане ?
> -- 
> Ivan B. Serezhkin
> Spamooborona, Yandex. http://so.yandex.ru/


Подробная информация о списке рассылки Moscow-pm