Proc :: Background究竟发生了什么?

时间:2012-08-07 18:40:16

标签: windows perl automation background-process strawberry-perl

我正在尝试编写一个自动执行其他perl脚本的脚本。基本上,我有一些脚本可以为我汇总数据,需要每周运行一次。我还有一些需要在周末运行以检查事情并在发生问题时给我发电子邮件。我已经完成了电子邮件,除了自动化之外的一切。从互联网搜索来看,似乎使用Proc :: Background是可行的方法。我尝试编写一个非常基本的脚本来测试它,并且无法弄清楚它。我是Perl的新手并且以前从未自动化任何东西(除了通过Windows任务调度程序),所以我真的不明白代码说的是什么。

我的代码:

use Proc::Background;

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


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

我收到一条错误消息no executable program located at C:...有人可以向我解释一下代码(Proc :: Background)到底在做什么吗?然后,我将至少更好地了解如何完成我的任务并在将来进行调试。感谢。

1 个答案:

答案 0 :(得分:2)

我在Proc :: Background的文档中注意到以下内容:

  

Win32 :: Process模块​​始终用于生成后台进程   在Win32平台上。此模块始终采用单个字符串   包含可执行文件名和任何选项参数的参数。   另外,它要求可执行文件的绝对路径是   也传给了它。如果只有一个参数传递给new,那么   它在空格上分成一个数组和第一个元素   split数组用于可执行文件的名称。如果有多个参数   传递给new,然后第一个元素用作可执行文件   名。

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

我通常在Windows任务中指定“perl.exe”:

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