Включить Perl в Java

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

Ответы

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

Здесь пример без использования обертки 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());
        }
    }
}

Ответ 5

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

Итак, возможно, это помогает вместо этого: java и perl Забастовкa >
edit: я сказал "возможно"

Ответ 6

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

Ответ 7

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