[英]Adding an Include Path for a Module in a Simple Perl Tutorial
我正在尝试做一个简单的教程,但我在开始时遇到了麻烦。 我的问题似乎是安装和获取模块的正确路径。
**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
假设您已在本地模块目录中安装了LWP,请在尝试加载LWP 之前放置BEGIN
块(在use strict
)。
原始代码中的版本号表示它是所需的最低版本。 由于你有一个更新的版本和LWP的界面是稳定的,一个简单的use LWP;
就足够了。
解决方案Host Gator似乎有点复杂。 我会使用lib模块:
use strict ;
use lib '/home/d********n/perl' ;
use LWP ;
如果从命令行运行脚本,则有两种方法可以不加改变地运行它。
通过在命令行键入以下内容将其设置为环境变量:
export PERL5LIB=/home/d********n/perl
myscript.pl
或者将其添加为perl commaind的选项
perl -I/home/d********n/perl myscript.pl
或者直接在命令行上使用 perl 选项参数标志 -I 例如。 多个目录/项目也有一个通用模块
perl -I'../project/lib' -I'../otherProject/lib' -I'lib' -M'Test::Doctest' -e run lib/MyOwnModule.pm
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.