2009-06-09 11 views
7

Runtime.getRuntime.exec( "...");を使わずにperlコードを実行する方法はありますか? (Javaアプリケーションで解析する)?PerlをJavaに組み込む

答えて

5

のために求めているように見えます。これまでに私が見つけた最も有望なことは、CPANのInline::Javaモジュールです。 PerlからJavaを呼び出すことができますが、JavaからPerlを呼び出す(一部のJavaクラスを介して)こともできます。

+2

あなたはこれについて確信しています:**あなたは逆を行うことができます:Javaからperlを呼び出す**、それはミッションクリティカルなもので信頼できるですか? – FutuToad

0

いいえ、これは存在しないと思います。 JVM(JRuby、Jythonなど)に移植された言語はいくつかありますが、Perlはまだそれらの1つではありません。

4

thisは、私は最近、これに自分自身を見てきた何を

1

私はJava Scripting APIを使ってパイと同じように簡単だと宣言できました。
しかし、どうやらそれは、既存の実装のリストにはありません...だから

が、多分これは代わりに役立ちます: java and perl
編集:私は "多分"

+2

JPLが死んでいます。それを使用しないでください。インライン:: Javaは行く方法です。 – daotoad

4

Inline::Javaが​​を提供していましたクラスで。これを使用して、JavaコードからPerlコードを呼び出すことができます。

Graciliano M. Passos' PLJavaも、埋め込みインタープリタを提供します。

JPL(Java Perl Lingo)を使用しないでください - プロジェクトは終了し、最新のperlsから削除されました。

0

スクリプト言語を使用する標準的な方法は、JSR 223で導入されたJava Scripting Supportです。現時点でサポートされているスクリプト言語のリストについては、scripting project homepageを参照してください。残念ながら、Perlはまだ:-(

2

Inline::Perlにありません受け入れられた方法です。しかし、JARから実行することができるJerlもあります。

ここ

an example VMラッパーを使用せずに(そうではありませんいます。楽しい)

は、ここでは、コードやすくするためにjerlWrapperクラスを使用していくつかの例です:

import jerlWrapper.perlVM; 

public final class HelloWorld { 

    /* keeping it simple */ 
    private static String helloWorldPerl = "print 'Hello World '.$].\"\n\";"; 

    public static void main(String[] args) { 
     perlVM helloJavaPerl = new perlVM(helloWorldPerl); 
     helloJavaPerl.run(); 
    } 
} 

または

import jerlWrapper.perlVM; 

public final class TimeTest { 

    /* The (ugly) way to retrieve time within perl, with all the 
    * extra addition to make it worth reading afterwards. 
    */ 
    private static String testProggie = new String(
      "my ($sec, $min, $hr, $day, $mon, $year) = localtime;"+ 
      "printf(\"%02d/%02d/%04d %02d:%02d:%02d\n\", "+ 
      "  $mon, $day + 1, 1900 + $year, $hr, $min, $sec);" 
    ); 

    public static void main(String[] args) { 
     perlVM helloJavaPerl = new perlVM(testProggie);  
     boolean isSuccessful = helloJavaPerl.run(); 
     if (isSuccessful) { 
      System.out.print(helloJavaPerl.getOutput()); 
     } 
    } 
} 
+0

Jerl for Perl5は推奨されていません。 Rakudo perlにはVMオプションが用意されています:http://en.wikipedia.org/wiki/Rakudo_Perl_6 – michaelt

+0

Perl5用のJerlは本当に推奨されていません。このプロジェクトは2年間安定していましたが、より良い仮想化オプションがあります。 – michaelt