Добавление пути включения модуля в простое руководство по Perl - PullRequest
3 голосов
/ 11 июня 2010

Я пытаюсь сделать простой урок, но у меня проблемы с началом работы.Кажется, моя проблема заключается в установке и получении правильного пути к модулям.

** 1.Вот оригинальный код: *****

#!/usr/bin/perl -w
use strict;
use LWP 5.64;

my $browser = LWP::UserAgent->new;
my $url = 'http://www.cspan.org/RECENT.html';
my $response = $browser->get($url);

die "Can't get $url -- ", $response->status_line
    unless $response->is_success;

my $html = $response->content;
while( $html =~m/<A HREF=\"(.*?)\"/g ) {
    print "$1\n";

2.Но в Host Gator они говорят следующее:

Местоположение ваших модулей Perl

Путь: / home / d ******** n / perl

Использование ваших модулей Perl

Вам необходимо добавить / home / d ******** n / perl к пути включения.Вы можете сделать это, добавив следующий код в ваш скрипт:

BEGIN {
    my $base_module_dir = (-d '/home/d********n/perl' ? '/home/d********n/perl' : ( getpwuid($>) )[7] . '/perl/');
    unshift @INC, map { $base_module_dir . $_ } @INC;
}

3.Поэтому я добавил код, но понятия не имею, добавил ли я его в правильном месте.

#!/usr/bin/perl -w
use strict;
use LWP 5.64;

BEGIN {
    my $base_module_dir = (-d '/home/d********n/perl' ?

'/home/d********n/perl' : ( getpwuid($>) )[7] . '/perl/');
    unshift @INC, map { $base_module_dir . $_ } @INC;
}


my $browser = LWP::UserAgent->new;
my $url = 'http://www.cspan.org/RECENT.html';
my $response = $browser->get($url);

die "Can't get $url -- ", $response->status_line
    unless $response->is_success;

my $html = $response->content;
while( $html =~m/<A HREF=\"(.*?)\"/g ) {
    print "$1\n";

Любая помощь будет принята с благодарностью.

К вашему сведению, я уже убедился, чтофайл имеет необходимые права доступа 755

Кроме того, LWP :: UserAgent имеет номер 5,835 в Host Gator.Означает ли это, что я должен изменить

использовать LWP 5.64;

на

использовать LWP 5.835

Ответы [ 2 ]

3 голосов
/ 11 июня 2010

Если у вас установлен LWP в каталоге локального модуля, поместите блок BEGIN перед , когда вы попытаетесь загрузить LWP (сразу после use strict).

Номер версии в исходном коде указывает, что это минимально требуемая версия.Поскольку у вас более новая версия, а интерфейс LWP стабилен, достаточно простого use LWP;.

2 голосов
/ 11 июня 2010

Решение Host Gator кажется немного сложным. Я бы использовал модуль lib:

use strict ;
use lib '/home/d********n/perl' ;
use LWP ;

Если вы запускаете скрипт из командной строки, есть два способа запустить его без изменений.

Установите его как переменную окружения, набрав в командной строке следующее:

export PERL5LIB=/home/d********n/perl 
myscript.pl

или добавьте его в качестве опции к команде perl

perl -I/home/d********n/perl myscript.pl
...