我有两个perl脚本.两者都没有"包"关键字或任何东西.我有一个sub(以及一些自由浮动代码)我想在另一个脚本中使用,而不需要在进程中运行自由浮动代码.
A.pl
sub my_sub {
# do something
}
# do something else
my_sub();
# do something else
Run Code Online (Sandbox Code Playgroud)
B.pl
require A.pl; # but load only the subs, don't run anything
my_sub();
Run Code Online (Sandbox Code Playgroud)
这是否可能,而不必在单独的.pm文件中分离出sub然后加载它?
Tan*_*lus 11
require将运行代码.那么你需要A.pl来识别加载和在命令行上调用之间的区别.我认为可以做到,但你有点忽视这一点.
相反,我强烈建议扭转一切.不是拥有庞大的pl脚本,也没有pm模块,而是反转它并拥有微小的pl文件,其唯一的功能是加载模块并调用封装其中功能的函数.然后添加新模块来保存共享的表单或功能是微不足道的.