2009年5月31日星期日

[PerlChina] Re: 请问如何在AUTOLOAD里得到方法名?

现在担心的是如果这个类在多线程环境下跑的话,在一个线程里取到的$AUTOLOAD可能已经被另一个线程改变了,请问有没有方法能避免这个啊?是不是只能自己写同步代码?

多谢了!

________________________________________
From: perlchina@googlegroups.com [mailto:perlchina@googlegroups.com] On Behalf Of agentzh
Sent: Sunday, May 31, 2009 2:36 PM
To: perlchina@googlegroups.com
Subject: [PerlChina] Re: 请问如何在AUTOLOAD里得到方法名?

2009/5/31 Luo, Yong <Yong.Luo@acs-inc.com>

就是这个,但是我试过好像不行,用的是perl5.10,

Really?!

$ perl -e ' package Foo; Foo->bar; sub AUTOLOAD { print $AUTOLOAD }'
Foo::bar

$ perl -v

This is perl, v5.10.0 built for i486-linux-gnu-thread-multi

Copyright 1987-2007, Larry Wall
...

 
而且这是个global变量,用起来比较不方便

Really?!

$ perl -we 'use strict; package Foo; use vars qw($AUTOLOAD); Foo->bar; sub AUTOLOAD { print $AUTOLOAD }'
Foo::bar

Try more carefully and rethink ;)

Cheers,
-agentzh



--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

没有评论: