使用Win32 :: Process;我的输出报告'系统找不到指定的路径'

时间:2010-06-30 02:51:14

标签: perl win32-process

我在重新使用10年后重新学习Perl。

我在本网站的一个类似问题的答案之一上复制并粘贴了以下两个脚本。我检查并仔细检查path并尝试了几次偏差,但我仍然得到相同的答案 -

The system cannot find the path specified

非常感谢任何帮助!

它会转到starting child process和退出,并显示错误消息The system cannot find the path specified

以下是原始两个脚本的剪切和粘贴

parent.pl:

#!/usr/bin/perl


use warnings;

use Win32;
use Win32::Process;

$| = 1;

my $p;

print "Starting child process ... \n";

Win32::Process::Create(
    $p,
    'c:\Perl\perl.exe',
    'perl hello.pl',
    1,
    NORMAL_PRIORITY_CLASS,
    '.',
) or die Win32::FormatMessage( Win32::GetLastError() );

print "Waiting three seconds before killing 'hello.pl'\n";

for (1 .. 3) {
    print;
    sleep 1;
}
$p->Kill(0)
    or die "Cannot kill '$p'";

hello.pl

#!/usr/bin/perl

$| = 1;

print "Hello World\n";
print "Sleeping 1000 seconds\n";

for (1 .. 1000) {
    sleep 1;
    print '.';
}

2 个答案:

答案 0 :(得分:2)

您需要转义路径中的反斜杠,或使用正斜杠。

看看这个somewhat related post

答案 1 :(得分:0)

(此答案将在条件检查时进行编辑)

  1. 检查是否有c:\Perl directory - 可能区分大小写(例如C:\而不是c:\
  2. 确保该目录中列出了perl.exe,实际路径可能为C:\Perl\bin\perl.exe
  3. 'perl hello.pl'可能需要是完全合格的perl路径(例如 'C:\Perl\perl.exe hello.pl'

  4. 旁注:

    1. 由于您使用的是单引号('),因此您无需转义反斜杠(\
    2. 如果正在处理 在Windows上你可以改变: #!/usr/bin/perl到指定的 Windows路径#!C:\Perl\perl.exe, 但是我不认为这真的很重要 在Windows上,它只是帮助您了解可执行文件的位置。