Perl的lib pragma如何工作?

Tyu*_*yug 5 perl

我用来use lib "./DIR"从其他地方的文件夹中获取库.但是,它似乎不适用于我的服务器,但它在我的本地桌面上工作正常.任何特殊原因?

还有一个问题,是否use lib会在几个模块中传播?

两种情况:假设我创建了一个需要几个库的基类,但我知道它需要扩展,扩展类需要使用另一个库.我可以将use lib命令放在基类中吗?还是我需要把它放在每个扩展课程中?

最后,我可以只有一个use package包含一堆使用lib的包,它会将使用lib语句传播到我当前的模块吗?< - 我不这么认为,但反正要求

Mic*_*man 3

.您的声明中的意思use lib是“当前工作目录”,并且仅当您的脚本从正确的目录运行时才有效。服务器对 cwd 的想法可能有所不同(或未定义)。假设库目录与脚本位于同一位置并且对其私有,您需要执行以下操作:

use FindBin;
use lib "$FindBin::Bin/DIR";
Run Code Online (Sandbox Code Playgroud)

语句use lib会影响您或模块@INC时 perl 搜索的位置列表。它全局影响解释器的当前实例。您实际上应该只将语句放在脚本中,而不是放在模块中。userequireuse lib

原则上,您可以有一个package MyLibs由一堆use lib语句组成的,然后use MyLibs在这些位置使用任何包之前,但我不推荐它。