я обвязки использовать вывод скрипта Perl в Node.jsNode.js child.spawn стандартный вывод «вживую» в каждой строке
for (my $i=10;$i<100 ;$i+=30)
{
printf "$i\n";
sleep(1);
}
Этот скрипт вызывается методом child_process.spawn. Моя проблема в том, что мне нужно работать с каждым выходом. Есть ли способ запустить событие, как только perl отправить новую строку в stdout? В моем фактическом коде я могу увидеть результат как сыпучие после того, как сценарий Perl закончит работу, и это не возможно работать с одиночными линиями
function setStuff() {
var command = "perl";
var scriptpath = "script.pl";
var arg = [scriptpath];
run(command, arg);
}
function run(cmd, arg) {
var spawn = require('child_process').spawn;
var command = spawn(cmd, arg, {detached: true, stdout: 'pipe'});
command.unref();
var lineBuffer = "";
command.stdout.pipe(process.stdout);
command.stdout.on('data', function (data) {
lineBuffer += data.toString();
var lines = lineBuffer.split("\n");
for (var i = 0; i < lines.length - 1; i++) {
var line = lines[i];
console.log(line);
}
});
}
Спасибо! Он работает так, как должен! setEncoding потерялся, сделав код более удобным. На самом деле это было в исходном коде – DeZeT