2011-08-23 48 views
1

我需要幫助我的變量設置。此命令的一部分正在工作,但awk命令除外。我認爲它在這種情況下使用$2幫助調試perl變量插值

use strict; 
use warnings; 

my $cmd = qx(df -h | awk '{print $2}'); 
print "Output:$cmd\n"; 
+0

當你運行它時你會得到什麼,你期望得到什麼? –

+0

@Igor使用該代碼,他應該獲得'在串聯(。)或字符串中使用未初始化值$ 2「。 – TLP

+0

是的,我在那個上慢了一點。我在你回答3分鐘後回答,但我的回答與你的回答完全一樣,所以我刪除了我的回覆。 –

回答

4

$2被perl評估爲一個變量。你需要逃避它:

my $cmd = qx(df -h | awk '{print \$2}'); 

更新:

你不妨看看Filesys::DiskSpace。使用Perl本地解決方案通常比嘗試使用系統調用和解析輸入更好。

+0

沒錯。逃逸。謝謝。 – cjd143SD

+0

@cjd不客氣。 – TLP

+2

一般而言,您可以使用'作爲分隔符來使qx(或m,s或qr)無插值,但在這種情況下,您必須將引號轉義爲awk的arg:'qx'df -h | awk \'{print $ 2} \''' – ysth