0

私は Perl に不慣れで、何かをしようとしていますが、答えが見つかりません。

複数の入力パラメータを取得するメイン クラスを含む Java プロジェクトを作成しました。

Java を Perl でラップしたい: 入力パラメーターを取得し、それらを Java プログラムに渡して実行する Perl スクリプトを作成したいと考えています。

例えば:

メインが と呼ばれmymain、次のように呼び出す場合: mymain 3 4 hi(3とは入力パラメーター)、呼び出されたときにJava プログラムに引数を渡して実行するという Perl プログラムを作成したいと考えて4います。himyperlmyperl 3 4 hi

どうやってやるの?

4

2 に答える 2

5

Java プログラムの実行は、他の外部プログラムの実行と同じです。

あなたの質問には2つの部分があります:

  1. Perl から Java プログラムへの引数を取得するにはどうすればよいですか?
  2. Perl でプログラムを実行するにはどうすればよいですか?

(1)の場合、次のようなことができます

my $javaArgs = " -cp /path/to/classpath -Xmx256";
my $className = myJavaMainClass;
my $javaCmd = "java ". $javaArgs ." " . $className . " " . join(' ', @ARGV);

関数に注意してjoin()ください - これはすべての引数を Perl プログラムに入れ、それらをスペースで区切ります。

(2) については、@AurA の回答に従うことができます。

  • system()機能の使用

    my $ret = system("$javaCmd");
    

これは、成功の場合のように、コマンドの出力をキャプチャ (つまり、変数に入れる$ret) せず、リターン コードのみを取得します。0

  • バックティックの使用

    my $out = `$javaCmd`;
    

これにより、Java プログラムの出力全体が $out に取り込まれます (これは望ましくない場合があります)。

  • パイプの使用

    open(FILE, "-|", "$javaCmd");
    my @out = <FILE>
    

これはより複雑ですが、出力に対してより多くの操作を行うことができます。

これについての詳細は、perldoc -f openを参照してください。

于 2012-05-17T07:27:48.877 に答える
1
$javaoutput = `java javaprogram`;
or
system "java javaprogram";

jar ファイルの場合

$javaoutput = `java -jar filename.jar`;
or
system "java -jar filename.jar";
于 2012-05-17T07:11:23.013 に答える