gpt4 book ai didi

Perl - 包含来自相对路径的包,其中包含来自相对路径的另一个包?

转载 作者:行者123 更新时间:2023-12-01 04:44:57 24 4
gpt4 key购买 nike

我有三个文件:

~/multiFindBinTest.pl:

use FindBin;
use lib "$FindBin::Bin/mod2";
use pack2;

~/mod1/pack1.pm

package pack1;
1;

~/mod2/pack2.pm

use FindBin;
use lib "$FindBin::Bin/../mod1";
use pack1;
package pack2;
1;

如您所见,base.pl 使用 pack2,后者又使用 pack1。然而,这是一个如何不使用 FindBin 模块的演示:当执行 base.pl 时,pack2 将无法定位 pack1,因为它会保留从 base 获取的“$FindBin::Bin”的值.pl.

所以我的问题很简单:perl 中是否有一种方法可以“使用”一个“使用”另一个模块的模块,所有这些都基于相对于“使用”文件的路径?

最佳答案

找到模块 文件位置的唯一方法是使用__FILE__FindBin$0 始终引用主脚本文件。

对于模块,这是我能想到的最简洁的方法。您对主要代码的解决方案很好,但您也可以在那里使用此替代方案。

use strict;
use warnings;

use File::Basename 'fileparse';
use File::Spec;

my $dir;
BEGIN {
$dir = (fileparse(File::Spec->rel2abs(__FILE__)))[1];
}
use lib $dir.'../mod1';

use pack1;

package pack2;

1;

关于Perl - 包含来自相对路径的包,其中包含来自相对路径的另一个包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13709957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com