【发布时间】:2013-07-15 18:20:04
【问题描述】:
我有一堆 perl 脚本,每个脚本都需要有一个相同的 BEGIN 部分,这将我们开发的 perl 模块的路径添加到 @INC。因为它不是一个子,我不能简单地调用它。目前我在每个 perl 脚本中都包含这部分,这显然是一个令人头疼的维护。有没有更简单的方法来包含 BEGIN 部分?
BEGIN
{
my $current_script_dir = File::Basename::dirname(File::Spec::Functions::rel2abs($0));
# Assume that the root of all libraries is two levels up from the directory of the
# script being run.
my $all_libs_root = File::Spec->canonpath("$current_script_dir/../..");
# Make sure the path is absolute,
$all_libs_root = File::Spec->rel2abs($all_libs_root);
unshift(@INC, "$all_libs_root");
}
【问题讨论】:
-
您可能会考虑将
PERL5LIB环境变量设置为指向您的包含路径 - 用:分隔。然后,您无需将其添加到所有脚本中,而是添加到脚本运行的环境中。 -
或者考虑使用某种包管理解决方案(CPAN,或操作系统的包管理器)以稳健且可维护的方式将您的库放入解释器的默认位置。
标签: perl