如何在Windows XP上使用Perl运行可执行文件?

时间:2011-11-22 09:50:38

标签: perl executable

如何使用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.

我错过了什么?

3 个答案:

答案 0 :(得分:5)

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

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

system(@args);

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

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

perlmonks上的

This thread讨论了您提供的一些不同解决方案所带来的错误。

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

答案 1 :(得分: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.";
}

答案 2 :(得分:-1)

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

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