【问题标题】:How to run an executable file using Perl on Windows XP?如何在 Windows XP 上使用 Perl 运行可执行文件?
【发布时间】:2011-11-22 20:51:54
【问题描述】:

如何使用 perl 运行可执行文件?

例如,我想运行一个普通的 notepad.exe。我怎样才能做到这一点?

这就是我所拥有的:

my @args = system("notepad.exe");
system(@args) == 0  or die "system @args failed: $?";

但它会返回:

Can't spawn "cmd.exe": No such file or directory blah blah blah.

我错过了什么?

【问题讨论】:

  • 是的,但是我发现的东西对我来说没有意义。
  • system 返回单个值,而不是数组。有关详细说明,请参阅perldoc -f system。 perlmonks 上的This thread 讨论了您遇到的错误(提出了一些不同的解决方案)。

标签: perl executable


【解决方案1】:

您的代码似乎有点混乱。你可能想要的是类似的东西

my $cmd = "notepad.exe";
my @args = ($cmd, "readme.txt");

system(@args);

if($? == -1) {
    die "system @args failed: $?";
}

system 返回单个值,而不是数组。有关详细说明,请参阅perldoc -f system

This thread on perlmonks 讨论了您在提出几种不同的解决方案时遇到的错误。

这个答案是我原来的评论的延伸。如果是多余的,请见谅。

【讨论】:

    【解决方案2】:

    试试这个。

    my $prog = "C:\\strawberry\\perltest\\Extractor.bat";
    
    if (-f $prog)   # does it exist?
    {
        print "Will run notepad";
    system($prog);
    }
    else  
    {
        print "$prog doesn't exist.";
    }
    

    【讨论】:

    • 谢谢。这应该解释。 :)
    【解决方案3】:

    这是一个 Perl 内部错误,可能是由损坏的环境引起的。 Perl 找不到用于运行传递给system 的程序的 Windows shell cmd.exe

    使用Process Monitor 等一些实用程序来查看操作系统级别的情况。

    【讨论】:

      猜你喜欢
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多