2009-06-09 10 views
7

Runtime.getRuntime.exec ("...");을 사용하지 않고도 perl 코드를 실행할 수있는 방법이 있습니까? (자바 애플 리케이션에서 구문 분석)?Java에서 Perl 포함

답변

5

을 요구하는 것처럼 보인다. 지금까지 가장 유망한 점은 CPAN의 Inline::Java 모듈입니다. Perl로부터 자바를 호출 할 수 있지만 (포함 된 일부 Java 클래스를 통해) Java에서 Perl을 호출 할 수도 있습니다.

+2

이것에 대해 확실합니까? ** 역순으로 할 수 있습니까? Java **에서 perl을 호출 할 수 있습니까? 업무상 중요한 작업에서 신뢰할 수 있습니까? – FutuToad

0

아니요, 존재하지 않는다고 생각합니다. JVM (JRuby, Jython 등)으로 포팅 된 여러 언어가 있지만 Perl은 아직 그 중 하나가 아닙니다.

4

this 내가 최근에 나 자신을 찾고 있었어요 당신이

1

나는 Java Scripting API을 사용하여 파이처럼 쉽게 할 수 있다고 단정 할 수있었습니다.
그러나 외관상으로는 기존의 구현의 목록이 아니다 ... 그래서

은, 어쩌면이 대신하는 데 도움이 : java and perl
편집 : 나는 "아마이"

+2

JPL이 종료되었습니다. 사용하지 마십시오. 인라인 :: 자바는 갈 길이 멀다. – daotoad

4

Inline::Javaembedded Perl interpreter를 제공했다 수업에서. 이를 사용하여 Java 코드에서 Perl 코드를 호출 할 수 있습니다.

Graciliano M. Passos' PLJava도 임베디드 인터프리터를 제공합니다.

JPL (Java Perl Lingo)을 사용하지 마십시오. 프로젝트가 종료되었으며 최신 Perl에서 제거되었습니다.

0

향후 스크립팅 언어를 사용하는 표준 방법은 JSR 223에서 도입 된 Java Scripting Support를 사용하는 것입니다. 현재 지원되는 스크립팅 언어 목록은 scripting project homepage을 참조하십시오. 불행하게도, 펄은 아직 :-(

2

Inline::Perl에 존재하지 않은 승인 된 방법이다. 그러나 JAR에서 실행할 수 있습니다 Jerl도있다.

다음

an example VM의 래퍼를 사용하지 않고 (그렇게하지 않은 .

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

또는

: 재미) 여기

코드에 쉽게 만들기 위해 jerlWrapper 클래스를 사용하여 몇 가지 예입니다

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

Perl5 용 Jerl이 사용되지 않습니다. Rakudo perl에는 VM 옵션이 있습니다. http://en.wikipedia.org/wiki/Rakudo_Perl_6 – michaelt

+0

Perl5 용 Jerl은 실제로 사용되지 않습니다. 이 프로젝트가 2 년 이상 안정적 이었지만 더 나은 가상화 옵션이 있습니다. – michaelt

관련 문제