调用安装在不同路径/目录中的Perl模块

问题描述

我正在编写一个Perl脚本-

  • SSH到服务器之一,并使用Net::OpenSSH Perl模块进行一些操作。
  • 我希望使用Log::Log4perl Perl模块将脚本的整个日志存储在某些日志文件中。
  • 我想使用Text::CSV Perl模块将一些数据写入CSV文件。

实际上,这三个Perl模块已安装在不同的目录中。

让我们说-

  • Net::OpenSSH安装在/ path / to / lib1
  • Log::Log4perl安装在/ path / to / lib2
  • Text::CSV安装在/ path / to / lib3

由于这些Perl模块已安装在不同的位置,因此我在Shebang行中提到了各自的路径,如下所示:

方法1:

#!/usr/bin/perl -I/path/to/lib1 -I/path/to/lib2 -I/path/to/lib3

use strict;
use warnings;

use Net::OpenSSH;
use Log::Log4perl;
use Text::CSV;

#continue flow of the script
..

这对我来说很好用。

我发现了另一个调用这些Perl模块的方法,如下所示:

方法2:

#!/usr/bin/perl

use strict;
use warnings;

use lib '/path/to/lib1';
use lib '/path/to/lib2';
use lib '/path/to/lib3';
...

上面的方法对我也很好。

我发现使用FindBin来调用这些Perl模块的标准方法。

我对其语法感到困惑。如何使用FindBin Perl模块来实现相同的目的。

方法3:

#!/usr/bin/perl

use strict;
use warnings;

use FindBin qw($Bin);
use lib "$Bin/path/to/lib1";
use lib "$Bin/path/to/lib2";
use lib "$Bin/path/to/lib3";
...

这引发了以下错误,当我使用前两种方法(Method1,Method2)时,不会出现此错误。

unable to load Perl module IO::Pty: Can't locate IO/Pty.pm in @INC ...

我在方法3中做错了什么地方?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)