为什么 perl 反引号看不到第一个空格以外的任何内容?

为什么 perl 反引号看不到第一个空格以外的任何内容?

我有一个命令

$output = `somecommand parm1 parm2`;

当我尝试运行这个 perl 脚本时,我得到了。

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

似乎没有看到“我有一个朋友在不同的环境中运行它并且运行良好”之间的第一个空格以外的任何内容。

我的环境中可能有什么会导致这种情况?我正在使用 perl 5.20.0 。

答案1

这可能是 PATH 问题?下面是运行我的 $PATH 中的 echo 命令的示例脚本。

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
]

答案2

如果你想在 perl 中运行 linux 命令?试试这个。

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

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

相关内容