> 但是,这个函数要求是构造函数(我不肯定,请高手斧正),因为Perl 面向对象的模块,其构造函数本身就是裸字调用,就是用模块名字这个字符串作为第
> 一个参数传入的。而实例方法一般要求为一个bless过的引用。
>
呵呵,CGI 模块比较特殊,它同时提供了包函数和 OO 这两种 API。楼主加了下面这行就是使用了前者,即所谓的"标准接口":
use CGI qw/:standard/;
> 具体到你这个问题,你没用面向对象的方法来使用,已经超出了我的知识范围,就无法回答你了。而且我觉得你的需求很奇怪,能不能换个思路?
>
即使对于纯 OO 的方法,也可以直接调包函数。这里有一个 OO 的例子:
$ perl -e '$a = Foo->new; $a->foo; package Foo; sub new { bless {
foo => 32 }, shift } sub foo { print $_[0]->{foo} }'
32
我们还可以很变态地这么写:
$ perl -e '$a = Foo::new('Foo'); Foo::foo($a); package Foo; sub new
{ bless { foo => 32 }, shift } sub foo { print $_[0]->{foo} }'
32
注意这里二者的区别。事实上,perl 底层的作法就是那样的(除了多态查找这里没有,这一主题和 C++ 里的虚函数有些类似,哈哈)。
Perl 就是好玩哦,哈哈!
Cheers,
-agentzh
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---
没有评论:
发表评论