2011-08-23 4 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의 인수로 따옴표를 이스케이프해야합니다.'qx'df -h | awk \ '{print $ 2} \' '' – ysth