Include Perl in Java

前端 未结 7 1224
予麋鹿
予麋鹿 2020-12-31 20:19

Is there any way to execute perl code without having to use Runtime.getRuntime.exec(\"...\"); (parse in java app)?

相关标签:
7条回答
  • 2020-12-31 20:59

    Inline::Perl is the accepted way. But there's also Jerl which may be run from a JAR.

    Here's an example without using the VM wrapper (which is not so fun).

    Here's some examples using the jerlWrapper class to make it easier to code:

    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();
        }
    }
    

    or

    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 讨论(0)
  • 2020-12-31 21:06

    I could have sworn it was easy as pie using the Java Scripting API.
    But apparently it's not on the list of existing implementations...

    So, maybe this helps instead : java and perl
    edit: i said "maybe"

    0 讨论(0)
  • 2020-12-31 21:07

    Inline::Java provides an embedded Perl interpreter in a class. You can use this to call Perl code from your Java code.

    Graciliano M. Passos' PLJava also provides an embedded interpreter.

    Don't use JPL (Java Perl Lingo)--the project is dead and has been removed from modern perls.

    0 讨论(0)
  • 2020-12-31 21:07

    No, I don't believe this exists. While there have been several languages ported to the JVM (JRuby, Jython etc) Perl is not yet one of them.

    0 讨论(0)
  • 2020-12-31 21:12

    In the future, the standard way to use any scripting language is through the java Scripting Support introduced in JSR 223. See the scripting project homepage for a list of scripting languages supported at the moment. Unfortunately, Perl isn't on there yet :-(

    0 讨论(0)
  • 2020-12-31 21:15

    this looks like what you're asking for

    0 讨论(0)
提交回复
热议问题