2012-02-03 2 views
3

가 여기 내 현재 코드의 출력 캡처 :이와는 명령에 펄 변수를 보내기 내가 시스템 명령에 펄 변수를 전달하고 나중에 사용에 대한 출력을 캡처하려고 해요

my $updatedCmd = "|svn diff --summarize $svnOldFull $svnNewFull"; 
my $updatedUrls = ''; 
open UPDATES, $updatedCmd or die "Can't get updates"; 
while(<UPDATES>) { 
    print $_; 
} 

print "THIS_SHOULD_OUTPUT_AT_THE_END\n"; 

문제를 출력을 얻는 것입니다 :

THIS_SHOULD_OUTPUT_AT_THE_END 
A  /test 
A  /test2 
A  /deployment.txt 

내 perl 스크립트가 더 이상 진행되기 전에 모든 명령 출력을 캡처하고 싶습니다.

답변

3

잘못된 명령 끝에 파이프를 놓았습니다. 이 시도 :이 작업을 수행하는

my $updatedCmd = "svn diff --summarize $svnOldFull $svnNewFull|"; 
+0

Ahh perfect thanks :) – DanH

5

더 현대적인 방법으로는 다음과 같다

my @cmd = qw(svn diff --summarize), $svnOldFull, $svnNewFull; 
    open my $pipe, '-|', @cmd or die "oops: $!"; 
    while (<$pipe>) { ... } 

장점

  • 더 전역 없다

  • 개방 모드 파일/명령

    분리
  • 배열로 배열하므로 셸 따옴표가 필요하지 않습니다.