Включить Perl в Java - PullRequest
       22

Включить Perl в Java

7 голосов
/ 09 июня 2009

Есть ли способ выполнить код на Perl без использования Runtime.getRuntime.exec ("..."); (разбирать в Java-приложении)?

Ответы [ 7 ]

5 голосов
/ 09 июня 2009

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

4 голосов
/ 09 июня 2009

Inline :: Java предоставляет встроенный интерпретатор Perl в классе. Вы можете использовать это для вызова Perl-кода из вашего Java-кода.

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

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

4 голосов
/ 09 июня 2009

это выглядит так, как вы просите

2 голосов
/ 12 сентября 2012

Inline::Perl является принятым способом. Но есть также Jerl , который может быть запущен из JAR.

Вот пример без использования виртуальной оболочки (что не так весело).

Вот несколько примеров использования класса 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());
        }
    }
}
1 голос
/ 09 июня 2009

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

Итак, может быть, это поможет вместо: Java и Perl
edit: я сказал "возможно"

0 голосов
/ 10 июня 2009

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

0 голосов
/ 09 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...