2012-08-07 85 views
0

我正在尝试编写一个脚本来自动执行其他perl脚本。从本质上讲,我有几个为我汇总数据的脚本,需要每周运行一次。如果有问题,我还有一对夫妇需要在周末运行以检查事情并给我发电子邮件。我已经制作出了电子邮件,除了自动化以外的所有内容通过互联网搜索判断,似乎使用Proc :: Background是一条路。我试图编写一个非常基本的脚本来测试它,并不能完全弄明白。我对Perl很新,从来没有自动化过任何东西(除了通过Windows任务计划程序),所以我真的不明白代码的意思。Proc :: Background究竟发生了什么?

我的代码:

use Proc::Background; 

$command = "C:/strawberry/runDir/SendMail.pl"; 


my $proc1 = Proc::Background -> new($command); 

我收到一条no executable program located at C:...有人能向我解释究竟是什么代码(PROC ::背景)正在做的错误?那么至少我会更好地了解如何在未来完成我的任务和调试。谢谢。

+0

你有'\',而不是'/'好运气? shell不像操作系统本身那么灵活。 (不要忘记在文字中加倍\':':c:\\ st ...“' – ikegami 2012-08-07 19:25:45

+0

我最终通过在开头处抛出'perl'来实现它。 – 2012-08-07 20:04:21

回答

2

我做了PROC通知::背景的文档如下:

使用Win32 ::处理模块总是被用来产卵背景Win32平台上的进程 。该模块始终采用包含可执行文件名称和任何选项参数的单个字符串 参数。 此外,它还要求传递给它的可执行文件的绝对路径为 。如果只有一个参数被传递给新的,则 它将以空格分割成一个数组,分割数组的第一个元素以可执行文件的名称使用。如果将多个参数 传递给new,则第一个元素将用作可执行文件的 名称。

所以,它看起来像它需要一个可执行文件,一个Perl脚本不会,但“perl.exe所在”会。

我通常在我的Windows任务指定 “perl.exe所在” 以及:

C:\dwimperl\perl\bin\perl.exe "C:\Dropbox\Programming\Perl\mccabe.pl" 
+0

谢谢。我通过在其前面添加“perl”来获得命令,所以它看起来像这样:'$ command =“perl C:/strawberry/runDir/cmd.pl”' – 2012-08-08 16:01:30