Имейте это демо 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(...)
... и т.д. - , а также получить рабочий
use My::CGI qw(:xxx)
#xxx от CGI, например.:all
или:html2
и т.д ...
не нужен код, просто любой указатель/идея «как правильно решить» проблему.
смешанный режим (ОО + функциональный) модуль интерфейсы опале в сообществе Perl некоторое время теперь, и вы видите, одна из причин, почему , Чтобы «наследовать» функциональный интерфейс модуля OO в ваш подкласс, вам необходимо полностью охватить загрязнение пространства имен. – tjd