2011-08-23 50 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