如何使用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 :(得分:5)
您的代码似乎有点混乱。您可能想要的是
my $cmd = "notepad.exe";
my @args = ($cmd, "readme.txt");
system(@args);
if($? == -1) {
die "system @args failed: $?";
}
system
返回单个值,而不是数组。有关详细说明,请参阅perldoc -f system
。
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来查看操作系统级别的内容。