所以,我的代码(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 {}块的事情,但我真的不知道我在那里做什么,并且很可能最终会重构.但如果有人对这类问题有一些聪明的洞察力,那么这将是获得一些积分的好机会!