0

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

这可能吗?

4

3 回答 3

3

您可以使用 Perl 的-e开关从命令行执行代码,例如

perl -e 'use your_module; your_function()'

-M使用加载模块的开关使其更短:

perl -Myour_module -e 'your_function()'

perlrun手册页是您的朋友。

于 2012-10-18T11:58:25.930 回答
2

如果您想要一个更优雅的解决方案,您的模块可以配置为检测它是否作为脚本运行并在这种情况下表现不同。请参阅此讨论:在 Perl 中,如何确定我的文件是用作模块还是作为脚本运行?

于 2012-10-18T12:06:37.033 回答
2

您可以使用类似的东西从命令行运行子例程

perl -MYour::Module=some,functions,to,import,such,as,foo -e 'foo();'

因此,您将能够从 crontab 执行相同的操作。请注意,cron 通常使用一组受限制的环境变量运行,因此您可能需要添加一个-I/path/to/your/modules选项。

于 2012-10-18T11:58:23.417 回答