在另一个脚本中重用perl脚本中的sub

shi*_*shu 3 perl

我有两个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文件,其唯一的功能是加载模块并调用封装其中功能的函数.然后添加新模块来保存共享的表单或功能是微不足道的.

  • @shikhanshu有:`来电者'.查看我在您的问题下链接的问题.但是Tanktalus是对的:你应该努力模块化你的代码. (2认同)