2013-04-02 60 views
0

我想在我的perl腳本意外令牌附近的語法錯誤`|' Perl代碼

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

執行此,但是當我運行該腳本,它告訴我這樣的事情:

SH:-c:線路1:語法附近意外的錯誤標記`|'

sh:-c:line 1:`| wc -l'

這可能是哪個錯誤?

+8

凡$ pidnumber哪裏來的?可能會附加一個換行符? – RickF

回答

1

$pidnumber是否以換行結束?請參閱chomp函數。

1

嘗試打印之前執行的命令,因爲$pidnumber可能有一些奇怪:如果換行出現在打印一句

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

爲@mob說,使用格格。

+0

'使用Data :: Dumper;本地$ Data :: Dumper :: Useqq = 1; print(Dumper($ command_str));'在尋找古怪方面更有用,特別是尾隨的換行符。 – ikegami

1

我與其他答案同意管之前額外的換行符是很可能的原因

但該命令並不真正需要管!

力的報價命令返回它的值作爲一個表,然後獲取列表的長度和你有廁所-l「行數」

my $command_str = "ps -p $pidnumber"; 
my $linecount =() = qx!$command_str!; 
相關問題