2011-01-13 5 views
2

나는 명령 행에서 인수를 전달할 수있는 펄 스크립트를 가지고 있으며 결과를 출력 할 것이다. 그 결과를 캡처하려고 시도했습니다 :perl`command` 호출에서 다중 행 출력을 어떻게 캡처합니까?

$systemReturn = `$cmd`; 

빈 문자열의 응답 만 있습니다. 나는이 파일이 다중 줄 문자열을 출력한다는 것을 안다. obvously 그것을 캡처하는 데 필요한 diffirent 방법이 있습니다. 아무도 내가이 일을 어떻게 처리 할 수 ​​있는지 안다?

답변

5

명령은 아마 표준 출력하지 stderr로 출력합니다. 시도해보십시오.

$systemReturn = `$cmd 2>&1`; 
+0

감사합니다. 표준 출력이 아닌 표준 오류 출력 중입니다. 그래서 전체 출력을 단일 문자열로 리디렉션한다고 가정하는 것이 안전할까요? – John

+1

예. 별도의 줄을 사용하려면 @ array =를 사용하십시오. – ysth

+0

+'$ cmd 2> & 1'에서 출력 된 문자열을 캡처하여 로거 (또는 로깅 func)에 출력 할 수 있습니다. –

0

사용이

@systemReturn = `$cmd`; 
2

Capture::Tiny 또는 IO :: CaptureOutput도 확인하는 것이 좋습니다. 출력을 포착하고 STDOUT 및 STDERR을 분할 또는 결합하고, 성공을 확인하고, 심지어는 Te를 더 쉽고 더 휴대 가능하게 만듭니다.

관련 문제