来自cron从perl模块运行子程序

时间:2012-10-18 11:54:15

标签: perl cron crontab

我有一个我创建的Perl模块,我想按计划运行其中一个子程序。我知道我可以创建一个小的perl脚本来调用子例程并从crontab中调用它,但是如果有一种方法可以直接从crontab调用子例程,这将很酷!

这可能吗?

3 个答案:

答案 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?