赋予’use lib’的perl动态路径

赋予’use lib’的perl动态路径,第1张

概述所以,我的代码(Perl脚本和Perl模块)就像这样一棵树: trunk/ util/ process/ scripts/ ‘util’目录有实用程序,’process /’目录中的东西需要.他们像这样访问: use FindBin;use lib "$FindBin::Bin/../util";use UtilityModule qw(all); 只要你在树中与 所以,我的代码(Perl脚本和Perl模块)就像这样一棵树:

trunk/     util/     process/     scripts/

‘util’目录有实用程序,’process /’目录中的东西需要.他们像这样访问:

use FindBin;use lib "$FindBin::Bin/../util";use UtilityModule qw(all);

只要你在树中与“util /”处于同一级别,那个结构并不关心你从哪里开始.
但我觉得’scripts /’过于拥挤,所以我创造了

scripts/scripts1     scripts/scripts2

现在我看到这不起作用.如果我运行脚本’trunk / scripts / scripts1 / call_script.pl’,并且它调用’/trunk/process/process_script.pl’,那么’process_script.pl’将无法尝试从UtilityModule()获取例程,因为FindBin返回的路径是顶级调用脚本的路径.

我想到的解决这个问题的前十种方法都涉及到:

use lib $path_that_came_from_elsewhere;

但这似乎是Perl不喜欢做的事情,除了通过FindBin技巧.

我尝试了一些涉及BEGIN {}块的事情,但我真的不知道我在那里做什么,并且很可能最终会重构.但如果有人对这类问题有一些聪明的洞察力,那么这将是获得一些积分的好机会!

解决方法 你考虑过使用 lib::abs吗? $FindBin的一个特性(在某些情况下可能是你的限制)是它相对于执行的二进制文件而不是相对于调用者而言是有效的.另一方面,lib :: abs相对于它所放置的模块是有效的.此外,你还可以使用如下的globs:

use lib::abs qw{../modules/*/somelib};
总结

以上是内存溢出为你收集整理的赋予’use lib’的perl动态路径全部内容,希望文章能够帮你解决赋予’use lib’的perl动态路径所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1213641.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存