Назад | Перейти на главную страницу

Почему обратные кавычки perl ничего не видят после первого пробела?

У меня есть команда

$output = `somecommand parm1 parm2`;

Когда я пытаюсь запустить этот Perl-скрипт, я получаю.

Can't exec "somecommand" at .....

Кажется, он не видит ничего, кроме первого пробела между словами: `` У меня есть друг, который запускает это в другом env, и он работает нормально.

Что у меня могло быть в моем окружении, что могло бы вызвать это? Я использую perl 5.20.0.

Это может быть проблема с PATH? Вот пример сценария, который запускает команду echo, которая находится в моем $ PATH.

root@kt-wim-play:~# cat test.pl
#!/usr/bin/perl -w
use strict;

print "PATH=$ENV{PATH}\n";

print "Running a command... [" . `echo foo bar baz` . "]\n";


root@kt-wim-play:~# perl test.pl
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Running a command... [foo bar baz
]

Если вы пытаетесь запустить команду linux внутри perl? Попробуй это.

my $output = system("/path/to/command args");

http://www.perlmonks.org/?node_id=78523