[Moscow.pm] Эх .. знали бы что у перла внутри - перешли бы на питон.
Vany Serezhkin
ivan на serezhkin.com
Вт Дек 9 10:37:10 PST 2008
Привет.
Помнится я Монсу обещал показать как "Это" и "Не множко другой перл"
Вот такая программа :
#!/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/
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: Makefile.PL
Type: application/x-perl
Size: 272 bytes
Desc: отсутствует
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20081209/9f8058bd/attachment.bin>
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: Refmonitor.pm
Type: application/x-perl
Size: 331 bytes
Desc: отсутствует
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20081209/9f8058bd/attachment-0001.bin>
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: Refmonitor.xs
Type: image/x-xbitmap
Size: 3646 bytes
Desc: отсутствует
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20081209/9f8058bd/attachment.xbm>
Подробная информация о списке рассылки Moscow-pm