2010-11-24 105 views
1

如果我嘗試執行下面的腳本,會出現「svn:Write error」錯誤。
但是,如果我禁用行與「最後」沒有任何錯誤。
爲什麼?讀取「svn log」命令輸出時出錯

#!/usr/bin/perl 

my $repos = $ARGV[0]; 
my $rev = $ARGV[1]; 

my $repoURL = "file:///" . $ARGV[0]; 

open (SVNLOG, "svn log -r $rev -v $repoURL | "); 

while (my $line = <SVNLOG>) { 
    last; 
} 

close(SVNLOG); 

回答

2

因爲svn進程試圖寫入流(其標準輸出),您關閉了流可能完成之前。如果您不想看到此錯誤行,則必須將svn標準錯誤重定向到/dev/null,或者在關閉文件句柄之前確保您讀取其輸出的全部

+0

爲什麼我在下面的情況下沒有這樣的錯誤open(SVNLOG,「ls -R $ TRACEDIR |」); – 2010-11-24 13:12:32

0

不直接回答你的問題,但你應該考慮使用CPAN的SVN::Client而不是直接使用svn命令行工具。