通过perl调用java方法并获取返回值而不使用内置函数

时间:2014-06-04 05:18:05

标签: java perl

我有一个Java程序,它有一个静态方法

     private static int checkURL(String currentURL) 

从我的perl脚本中,我想调用此方法并获取此方法的返回值。

我有一个约束,我无法使用CPAN提供的任何内置Perl模块。

我想在Perl中通过system()命令调用Java但问题是如何调用此方法并获取返回代码?

2 个答案:

答案 0 :(得分:0)

调用外部命令并取回结果(直接来自http://www.perlhowto.com/executing_external_commands

#-- scalar context
$result = `command arg1 arg2`;

答案 1 :(得分:0)

使用Java模块

use Java;
my $java = new Java;
my $obj = $java->create_object("com.my.Class","constructor parameter");
$obj->checkURL("http://www.google.com/");
$obj->setId(5);

Iniline::Java也是Java / Perl集成的着名模块。

编辑:我有一个约束,我不能使用CPAN提供的任何内置perl模块。

对不起,我没有看到。我曾经尝试过类似下面的东西。


Hello.java

class Hello {
  // Your program begins with a call to main().
  public static void main(String args[]) {
  System.out.println("This is a simple Java program to test return code.\n");
  System.exit(100);
  }
} 

test.pl

#!/usr/bin/perl
use strict;
use warnings; 
my $command = "java Hello";
print "Command is $command:\n";
system($command);
my $retval = $? >> 8;
print "The return code is $?\n";
print "retval is $retval\n";

运行它

  

perl test.pl

输出

Command is java Hello:
This is a simple Java program to test return code.

The return code is 25600
retval is 100