将Java STDOUT传递给perl STDOUT

时间:2016-11-11 14:12:01

标签: java perl

我正在从perl运行java应用程序

这是脚本

#!/usr/bin/perl
use strict;
use warnings;

$| = 1;

my $args = join (" " , @ARGV);

my $command = "/usr/java/jdk6/bin/java -jar  runner-0.0.1-SNAPSHOT.jar $args";
print "Executing $command\n";
print "Please wait...\n";

print `$command`;

Java应用程序在控制台[STDOUT]中编写调试信息,如果在外部运行命令,即bash,但是当我从perl调用时,它会缓冲调试消息并仅在完成java应用程序时打印。

如何在从perl调用时传输调试消息?

我删除了控制台缓冲区$| = 1但同样

1 个答案:

答案 0 :(得分:5)

将其作为文件句柄打开,并以通常的方式从中读取。

angular-cli\bin

如果您想对输出数据执行非阻塞读取,您可能会发现#!/usr/bin/env perl use strict; use warnings; $| = 1; my $command = "/usr/java/jdk6/bin/java -jar runner-0.0.1-SNAPSHOT.jar @ARGV"; open ( my $java_output, '|-', $command ); while ( my $line = <$java_output> ) { print $line; } close ( $java_output ); 很有用。