我正在考虑用 Perl 重写一个旧的应用程序。
设置三个包并从中运行子例程对于我将要做的事情很有意义,但我对设置包不是很熟悉。
我希望这些包与我的其他 Perl 脚本位于同一个位置,即除了这个 bin 目录中的脚本之外,不需要调用这些包。
我的问题是如何让 Perl 知道我的包在哪里(以及如何将它们安装在默认位置以外的地方),这是一件可以/聪明的事情吗?
我正在考虑用 Perl 重写一个旧的应用程序。
设置三个包并从中运行子例程对于我将要做的事情很有意义,但我对设置包不是很熟悉。
我希望这些包与我的其他 Perl 脚本位于同一个位置,即除了这个 bin 目录中的脚本之外,不需要调用这些包。
我的问题是如何让 Perl 知道我的包在哪里(以及如何将它们安装在默认位置以外的地方),这是一件可以/聪明的事情吗?
这是一项常见的任务。PERL5LIB 环境变量包含要在其中查找模块的目录列表。您还可以使用lib
pragma指定特定脚本应在其中查找模块的目录:
#!/usr/bin/perl
use strict;
use warnings;
use lib "$ENV{HOME}/lib";
您可能还想研究cpanm
and local::lib
。
如果包和脚本位于同一位置,我建议使用FindBin
:
use FindBin '$Bin';
use lib $Bin;