Как запустить исполняемый файл с помощью Perl в Windows XP? - PullRequest
2 голосов
/ 22 ноября 2011

Как запустить исполняемый файл с помощью 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 ]

5 голосов
/ 22 ноября 2011

Ваш код выглядит немного запутанным.Вероятно, вам нужно что-то вроде

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

system(@args);

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

system, возвращающее одно значение, а не массив.Смотрите perldoc -f system для подробного описания.

В этой теме в perlmonks обсуждается ошибка, которую вы получаете с несколькими представленными решениями.

Этот ответ является расширением моего исходного комментария 1013 *.Извините, если это излишне.

2 голосов
/ 22 ноября 2011

Попробуйте это.

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.";
}
0 голосов
/ 22 ноября 2011

Это внутренняя ошибка Perl, вероятно, вызванная неработающей средой. Perl не может найти оболочку Windows cmd.exe, которая используется под капотом для запуска программы, переданной в system.

Используйте некоторую утилиту как Process Monitor , чтобы увидеть, что происходит на уровне ОС.

...