0

我正在尝试编写一个自动化其他 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) 到底在做什么吗?然后,我至少会对将来如何完成我的任务和调试有一个更好的想法。谢谢。

4

1 回答 1

2

我确实注意到 Proc::Background 的文档如下:

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

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

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

C:\dwimperl\perl\bin\perl.exe "C:\Dropbox\Programming\Perl\mccabe.pl"
于 2012-08-07T21:16:19.933 回答