我有一个我创建的Perl模块,我想按计划运行其中一个子程序。我知道我可以创建一个小的perl脚本来调用子例程并从crontab中调用它,但是如果有一种方法可以直接从crontab调用子例程,这将很酷!
这可能吗?
答案 0 :(得分:3)
您可以使用Perl的-e
开关从命令行执行代码,例如
perl -e 'use your_module; your_function()'
使用-M
开关加载模块,使其更短:
perl -Myour_module -e 'your_function()'
perlrun man page是你的朋友。
答案 1 :(得分:2)
您可以使用
之类的命令从命令行运行子例程perl -MYour::Module=some,functions,to,import,such,as,foo -e 'foo();'
所以你可以从crontab做同样的事情。请注意,cron通常使用一组受限制的环境变量运行,因此您可能需要添加-I/path/to/your/modules
选项。
答案 2 :(得分:2)
如果您想要一个更优雅的解决方案,您的模块可以配置为检测它是作为脚本运行,并在这种情况下表现不同。请参阅此讨论:In Perl, how can I find out if my file is being used as a module or run as a script?