如何从crontab调用perl?

我可以在我的机架服务器共享主机的SSH控制台上运行这个命令:

cd /home/myaccount/public_html/whatever; perl -w -I/home/myaccount/public_html/whatever rss2txt.pl http://whatever.com/feed 

但是当我作为一个cron工作input相同的命令时,我得到:

Can't locate XML/RSS.pm in @INC (@INC contains: /home/myaccount/public_html/whatever /usr/local/lib/perl5/5.8.8/x86_64-linux /usr/local/lib/perl5/5.8.8 /usr/local/lib/perl5/site_perl/5.8.8/x86_64-linux /usr/local/lib/perl5/site_perl/5.8.8 /usr/local/lib/perl5/site_perl . .) at rss2txt.pl line 21. BEGIN failed--compilation aborted at rss2txt.pl line 21.

尽pipeRSS.pm在同一个目录( /home/myaccount/public_html/whatever )旁边,并且它在@INC中有这个path,而且我已经做了一个cd到正确的文件夹如果还是这样的话。

记住它是共享主机,所以我不能改变全局设置,我怎么说服perl去寻找RSS.pm在/home/myaccount/public_html/whatever

不确定它是相关的,但这里是rss2txt.pl:http://pastebin.com/GWKZtJCN

ramrumabuild议把它变成一个shell脚本(见下文)。 我在这里包括我的尝试,因为评论不能是多行的:

 #!/bin/bash PERL5LIB=$HOME/public_html/whatever PATH=$PATH;$HOME/public_html/whatever cd $HOME/public_html/whatever perl -w -I$HOME/public_html/whatever rss2txt.pl http://whatever.com/feed 

尽pipe将该文件夹添加到PERL5LIB,PATH和@INC,但该shell脚本甚至不能从SSH控制台运行。 所以如果我们能得到这个shell脚本,我想我们会解决这个问题的。

在设置任何适当的环境variables之后,编写一个运行命令的shell脚本。

您可以将本地目录添加到您的cron脚本顶部的PERL5LIB环境variables中,像这样;

 PERL5LIB=/home/myaccount/public_html/whatever:. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 52 * * * * /usr/bin/perl -w -I/home/myaccount/public_html/whatever/rss2txt.pl http://whatever.com/feed