node.js调用perl脚本并获取stdout

时间:2011-07-11 14:30:50

标签: javascript node.js

是否可以使用node.js作为进程调用perl脚本并逐行读回stdout?

我非常肯定使用普通的javascript这通常是不可能的,但是使用node.js的服务器端脚本似乎有点意义。

2 个答案:

答案 0 :(得分:7)

您可以使用node的内置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);
})

答案 1 :(得分:6)

是的,请查看spawn / exec。

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 */
});

我不确定你为什么不在节点中这样做。