Как я могу загрузить модуль Perl во времени выполнения?

Я хотел бы использовать HTML:: Шаблонный модуль. Однако это не установлено на сервере, который я использую для разработки сценариев CGI.

Это возможный загрузить модуль во времени выполнения: Я нашел файл Template.pm на своей локальной установке Perl и загрузил файл на сервер, который я использую.

#!/usr/bin/perl -w

use CGI qw(:standard :html4);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);

# use HTML::Template;

use Template;

# my $package = "HTML::Template";
# eval {
# (my $pkg = $package) =~ s|::|/|g; # require need a path
# require "$pkg.pm";
# import $package;
# };
# die $@ if( $@ );

# open the HTML template
my $template = HTML::Template->new(filename => 'test.tmpl');

# fill in some parameters in the template
$template->param(home => $ENV{HOME});
$template->param(path => $ENV{PATH});

# send the obligatory Content-Type
print "Content-Type: text/html\n\n";

# print the template
print $template->output;
9
задан Tim Cooper 25 September 2011 в 01:48
поделиться

4 ответа

Вот что я делаю:

     cgi-bin/script.pl
     cgi-bin/lib/HTML/Template.pm

В script.pl (если вы не используете mod_perl ):

 use FindBin qw( $Bin );
 use File::Spec::Functions qw( catfile );
 use lib catfile $Bin, 'lib';
 use HTML::Template;

 # The rest of your script

Если HTML :: Template действительно необязательный, прочтите perldoc -f require .

См. Также Как сохранить собственный каталог модулей / библиотек? и В чем разница между требованиями и использованием? в perlfaq8 .

11
ответ дан 4 December 2019 в 08:33
поделиться

Это похоже на ответ Синана, но использует local::lib:

Установите ваши файлы как:

cgi-bin/script.pl
cgi-bin/lib/HTML/Template.pm

И в вашем скрипте:

use strict;
use warnings;
use local::lib 'lib';
use HTML::Parser;

Преимущество local::lib в том, что вы можете устанавливать модули из CPAN прямо в каталог по вашему выбору:

perl -MCPAN -Mlocal::lib=lib -e 'CPAN::install("HTML::Parser")'
9
ответ дан 4 December 2019 в 08:33
поделиться

Вот что я делаю:

     cgi-bin/script.pl
     cgi-bin/lib/HTML/Template.pm

В script.pl (если вы не работаете под mod _ perl ):

 use FindBin qw( $Bin );
 use File::Spec::Functions qw( catfile );
 use lib catfile $Bin, 'lib';
 use HTML::Template;

 # The rest of your script

Если HTML:: Template действительно необязателен, прочитайте perldoc -f требуется .

См. также Как сохранить собственный каталог модулей/библиотек? и В чем разница между потребностью и использованием? в perlfaq8 .

-121--3250470-

VB.Net:

DirectCast(Master, MyMastPageType).SelectedPage

C #:

((MyMastPageType)Master).SelectedPage

http://msdn.microsoft.com/en-us/library/system.web.ui.masterpage.master.aspx

-121--4378614-

HTML:: Template и Template являются различными модулями Perl. Если вы хотите использовать HTML:: Template, вам нужно будет использовать HTML:: Template; в верхней части сценария для импорта этого пакета.

Убедитесь, что файл HTML/Template.pm скопирован с локального компьютера на сервер, а не Template.pm.

4
ответ дан 4 December 2019 в 08:33
поделиться

Да. Посмотрите на Module::Runtime. Я бы все же установил ваш HTML модуль, даже в локальный каталог установки. Это, вероятно, менее хлопотно.

0
ответ дан 4 December 2019 в 08:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: