有這個演示CGI腳本(cgi_script.pl
)如何繼承CGI.pm以充分實用?
use 5.014;
use warnings;
use CGI;
my $q = CGI->new();
say $q->h1(join '-', $q->multi_param('p'));
say CGI::h1('some other');
乳寧它作爲perl cgi_script.pl p=1 p=2
打印
<h1>1-2</h1>
<h1>some other</h1>
我想創建My::CGI
和CGI
做它應該做的每一件事。現在我有:
package My::CGI;
use 5.014;
use warnings;
use base qw(CGI);
1;
並修改上面的腳本(my_script.pl
)
use 5.014;
use warnings;
use My::CGI;
my $q = My::CGI->new();
say $q->h1(join '-', $q->multi_param('p'));
say My::CGI::h1('some other');
運行它作爲perl my_script.pl p=1 p=2
當它打印:
<h1>1-2</h1>
Undefined subroutine &My::CGI::h1 called at my_script.pl line 7.
例如,面向對象接口的工作原理,但不是功能,如CGI::h1(...)
等。
現在的問題是:如何創建My::CGI
與父母CGI
完全兼容?例如
- 以獲得工作功能接口,例如,
My::CGI::h1(...)
... etc - 並且還從CGI得到工作
use My::CGI qw(:xxx)
#xxx,例如,:all
或:html2
等..
不是需要編寫代碼,只是任何指針/理念,以「如何正確解決」的問題。
混合模式(OO +功能)模塊的接口都在Perl社區失寵,而現在,你看到的原因之一。要將OO模塊的功能接口「繼承」到您的子類中,您需要完全接受命名空間污染。 – tjd