2011-07-11 64 views

回答

7

您可以使用節點的內置spawn命令子進程執行,並carrier處理行由行stdout處理:

安裝:

$ npm install carrier 

代碼:

var util = require('util'), 
    spawn = require('child_process').spawn, 
    carrier = require('carrier'), 
    pl_proc = spawn('perl', ['script.pl']), 
    my_carrier; 

my_carrier = carrier.carry(pl_proc.stdout); 

my_carrier.on('line', function(line) { 
    // Do stuff... 
    console.log('line: ' + line); 
}) 
+0

謝謝你們,看起來這可能就是答案。我會放棄這一點。 – evolution

6

是的,看看產卵/執行。

http://nodejs.org/docs/v0.4.8/api/child_processes.html

var exec = require('child_process').exec; 
exec("perl someperl.pl", function(err, stdout, stderr) { 
    /* do something */ 
}); 

我不知道你爲什麼會不只是做它的節點。

+0

另外請注意,這會讓您在一個大塊中返回stdout(和stderr),而不是逐行。如果這對你非常重要,你需要將輸出分割成換行符。 –

相關問題