【发布时间】:2012-10-08 20:57:13
【问题描述】:
我有一个我创建的 Perl 模块,我想按计划运行其中的一个子例程。我知道我可以制作一个小的 perl 脚本来调用子例程并从 crontab 中调用它,但是如果有一种方法可以直接从 crontab 中调用子例程,那就太好了!
这可能吗?
【问题讨论】:
我有一个我创建的 Perl 模块,我想按计划运行其中的一个子例程。我知道我可以制作一个小的 perl 脚本来调用子例程并从 crontab 中调用它,但是如果有一种方法可以直接从 crontab 中调用子例程,那就太好了!
这可能吗?
【问题讨论】:
您可以使用 Perl 的 -e 开关从命令行执行代码,例如
perl -e 'use your_module; your_function()'
使用-M 开关来加载模块,让这段时间更短:
perl -Myour_module -e 'your_function()'
perlrun man page 是你的朋友。
【讨论】:
您可以使用类似的方式从命令行运行子例程
perl -MYour::Module=some,functions,to,import,such,as,foo -e 'foo();'
因此,您将能够从 crontab 执行相同的操作。请注意,cron 通常使用一组受限的环境变量运行,因此您可能需要添加 -I/path/to/your/modules 选项。
【讨论】:
如果您想要一个更优雅的解决方案,您的模块可以配置为检测它是否作为脚本运行并在这种情况下表现不同。请参阅此讨论:In Perl, how can I find out if my file is being used as a module or run as a script?
【讨论】: