2011-11-25 42 views
0

我用Perl分叉進程,實際上它是一個wget命令。 Wget將一些數據寫入文件。我想捕獲wget生成的輸出(不是文件),並將它帶到主程序中。這是我正在處理的代碼片段:用Perl分叉進程輸出

my $pid; 
my @wgetDump; 
my $videoFileName = "abc"; 
my $fileURL = "http://www.youtube.com/watch?v=Y8NI2qUZ1co&feature=relmfu"; 

if ($pid = fork) { 
####Parent Process 
print "Child Process ID: $pid"; 
} else { 
####child process 
@wgetDump = `wget -O $videoFileName -c \"$fileURL\" 2>&1`; 
} 

foreach (@wgetDump) { 
### Here it want to get the @wgetDump Data which is actually the output of child process. 
### But I am not getting anything here. 
} 

任何人都可以請建議。

回答

1

首先,你爲什麼使用wget?爲什麼不使用LWP :: UserAgent來獲取網頁?然後你不需要在之後讀取文件,你已經有了這些數據。

在你的代碼中,只有子進程會獲得wget數據,所以你在子進程中處理。如果你真的想把它傳遞迴父進程,你需要IPC。考慮使用IPC :: Open2。但是我會使用LWP並在孩子中處理數據。