4

我正在尝试做一个简单的教程,但我无法开始。我的问题似乎是安装并获取模块的正确路径。

**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 在 Host Gator 中的数量为 5.835。这是否意味着我必须改变

使用 LWP 5.64;

使用 LWP 5.835

4

3 回答 3

3

假设您已经在本地模块目录中安装了 LWP,请在尝试加载 LWP之前BEGIN放置块(就在 之后)。use strict

原始代码中的版本号表示它是最低要求的版本。既然你有一个更新的版本并且 LWP 的界面是稳定的,一个简单的use LWP;就足够了。

于 2010-06-11T16:45:26.843 回答
2

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
于 2010-06-11T18:24:34.287 回答
0

或者直接在命令行上使用 perl 选项参数标志 -I 例如。多个目录/项目也有一个通用模块

perl -I'../project/lib' -I'../otherProject/lib' -I'lib' -M'Test::Doctest'  -e run lib/MyOwnModule.pm
于 2021-10-08T11:25:10.360 回答