2009-06-09 2 views

ответ

5

Я смотрел на это сам в последнее время. Наиболее многообещающая вещь, которую я нашел до сих пор, - это модуль Inline::Java на CPAN. Он позволяет вызывать Java из Perl, но также (через некоторые включенные классы Java), вызывая Perl из Java.

+2

Вы уверены, что: ** можете ли вы сделать обратное: вызов perl из Java **, является ли он надежным в критически важных вещах? – FutuToad

0

Нет, я не верю, что это существует. Хотя было несколько языков, перенесенных в JVM (JRuby, Jython и т. Д.), Perl еще не является одним из них.

1

Я мог бы поклясться, что это было легко, как пирог, используя Java Scripting API.
Но, видимо, это не в списке существующих реализаций ...

Так, может быть, это помогает вместо: java and perl
редактировать: я сказал "возможно"

+2

JPL мертв. Не используйте его. Inline :: Java - путь. – daotoad

4

Inline::Java обеспечивает embedded Perl interpreter в классе. Вы можете использовать это для вызова кода Perl из кода Java.

Graciliano M. Passos' PLJava также предоставляет встроенный интерпретатор.

Не используйте JPL (Java Perl Lingo) - проект мертв и удален из современных перлов.

0

В будущем стандартным способом использования любого языка сценариев является поддержка java Scripting Support, представленная в JSR 223. См. scripting project homepage для списка языков сценариев, поддерживаемых на данный момент. К сожалению, Perl не там еще :-(

2

Inline::Perl является общепринятым способом. Но есть также 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 имеет варианты виртуальной машины в будущем: http://en.wikipedia.org/wiki/Rakudo_Perl_6 – michaelt

+0

Jerl for Perl5 действительно устарел. Хотя проект был стабильным в течение 2 лет +, есть лучшие варианты виртуализации. – michaelt

Смежные вопросы