变量给出的文件的Perl`Require` [英] perl `require` for file given by variable

查看:18
本文介绍了变量给出的文件的Perl`Require`的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要使用一个模块,该模块的文件路径将位于变量中。

我尝试使用以下代码:

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

use Getopt::Long;

my ($library, $zipped, $aid_class_file);
GetOptions ("aid_class_file=s"  =>  $aid_class_file,
            "res_lib=s"         =>  $library,
            "zip"               =>  $zipped);

require $aid_class_file;

但它不起作用。我该怎么做?

编辑: 错误消息为:

Can't locate Error.pm in @INC (@INC contains: /usr/lib/perl5/5.8.3/x86_64-linux-thread-multi /usr/lib/perl5/5.8.3 /usr/lib/perl5/site_perl/5.8.3/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl .) at /nfs/iil/disks/home10/imelam2/learn_flow/flow_to_change/AidClass.pm line 6.
BEGIN failed--compilation aborted at /nfs/iil/disks/home10/imelam2/learn_flow/flow_to_change/AidClass.pm line 6.
Compilation failed in require at statistics.pl line 11.

我想添加名为AidClass.pm而不是Error.pm的文件

我使用以下代码运行:

statistics.pl -aid_class_file="/nfs/iil/disks/home10/imelam2/learn_flow/flow_to_change/AidClass.pm"

推荐答案

您的错误说明AidClass找不到导致其崩溃的Error.pm文件。在AidClass.pm的第6行调用Error.pm:

Can't locate Error.pm

它正在以下路径中查找它:

/usr/lib/perl5/5.8.3/x86_64-linux-thread-multi
/usr/lib/perl5/5.8.3 /usr/lib/perl5/site_perl/5.8.3/x86_64-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.3/x86_64-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl

根据您的AidClass的不同,您可以将其目录作为lib添加到AidClass.pm中,这样它也会在其中查找Error.pm:

use lib '/nfs/iil/disks/home10/imelam2/learn_flow/flow_to_change/';
use Error;

或者,您也可以从调用AidClass的脚本中执行此操作,而不是调用use Error;Calluse AidClass;,如果Error.pm位于文件夹中,则它将正常工作。

这篇关于变量给出的文件的Perl`Require`的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆