2011-11-22 143 views
2

如何使用perl运行可执行文件?如何在Windows XP上使用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.

我缺少什么?

+0

您是否尝试过Google? –

+0

是的,但是我发现对我来说没有意义。 – quinekxi

+2

'system'返回一个值,而不是一个数组。有关详细说明,请参阅'perldoc -f system'。 perlmonks上的[This thread](http://www.perlmonks.org/?node_id=421595)讨论了你得到的错误(提供了几个不同的解决方案)。 – gamen

回答

2

试试这个。

+0

谢谢。这应该解释。 :) – quinekxi

-1

这是一个Perl内部错误,可能是由于破坏的环境造成的。 Perl无法找到在shell中使用的Windows shell cmd.exe来运行传递给system的程序。

使用一些实用程序作为Process Monitor以查看操作系统级别发生了什么。

5

你的代码似乎有点困惑。你可能想要的是像

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讨论了您提供的几种不同解决方案所带来的错误。

此答案是我原创评论的扩展。对不起,如果它是多余的。

+0

那个线程确实回答了我的问题。 – quinekxi

相关问题