意外令牌附近的语法错误`|' Perl代码

时间:2013-04-02 17:04:27

标签: perl shell fedora

我试图在我的perl脚本中执行此操作

my $command = `ps -p  $pidnumber |  wc -l`;

但是当我运行脚本时,它会向我显示如下内容:

sh:-c:第1行:意外标记“|”

附近的语法错误

sh:-c:第1行:`| wc -l'

哪个可能是错误?

3 个答案:

答案 0 :(得分:1)

$pidnumber以新行结尾吗?请参阅chomp功能。

答案 1 :(得分:1)

在执行命令之前尝试打印,因为$pidnumber可能有一些奇怪的东西:

my $command_str = "ps -p  $pidnumber |  wc -l";
print $command_str, "\n";
my $command = qx!$command_str!;

如@mob所说,如果打印句中出现换行符,请使用chomp。

答案 2 :(得分:1)

我同意其他答案,即管道之前的额外换行很可能是原因

但该命令并不真正需要管道!

强制quoted命令将其值作为列表返回,然后获取列表的长度,你就得到了wc -l“行数”

my $command_str = "ps -p  $pidnumber";
my $linecount = () = qx!$command_str!;