Tôi có một mô-đun Perl mà tôi muốn sử dụng từ Java. Có cách nào để gọi mã này bằng cách sử dụng ActiveState Perl trên Windows hoặc Perl chung đi kèm với Linux không? Tôi đã tìm thấy các tham chiếu đến JPL nhưng nó dường như không còn được duy trì nữa.Tôi có thể gọi Perl từ Java bằng cách nào?
Trả lời
Inline-Java là thư viện thông thường để gọi java từ Perl và mô-đun post propose a org.perl.java này sẽ cho phép gọi Perl từ Java, như được yêu cầu.
Tuy nhiên, do tính không thể đoán trước của việc triển khai JNI cho các liên kết khác nhau rất khó để nói những kết hợp của JVM và Perl sẽ hoạt động. Thông thường, những gì được yêu cầu là Perl với MULTIPLICITY, và các luồng được biên dịch. Điều đó có nghĩa là anh ta sử dụng một Perl được xây dựng tùy chỉnh.
Nếu không, Inline::Java::Callback cho phép bạn gọi các hàm Perl từ Java. Để làm điều này, bạn cần phải tạo một đối tượng org.perl.inline.java.InlinePerlCaller
. Dưới đây là ví dụ về cách sử dụng thông thường:
use Inline Java => <<END ;
import java.util.* ;
import org.perl.inline.java.* ;
class Pod_regexp extends InlineJavaPerlCaller {
public Pod_regexp() throws InlineJavaException {
}
public boolean match(String target, String pattern)
throws InlineJavaException {
try {
String m = (String)CallPerlSub("main::regexp",
new Object [] {target, pattern}) ;
if (m.equals("1")){
return true ;
}
}
catch (InlineJavaPerlException pe){
// [email protected] is in pe.GetObject()
}
return false ;
}
}
END
my $re = new Pod_regexp() ;
my $match = $re->match("Inline::Java", "^Inline") ;
print($match . "n") ; # prints 1
sub regexp {
my $target = shift ;
my $pattern = shift ;
return ($target =~ /$pattern/) ;
}
Tôi không biết nó ổn định như thế nào, hoặc duy trì tốt như thế nào, vì vậy, một tùy chọn khác là viết tập lệnh làm ứng dụng của bạn cần và sau đó thực thi tập lệnh đó từ Java. Không phải là cách thanh lịch nhất, nhưng nó hoạt động.
Đây không phải là những gì Runtime.exec() là dành cho?
Runtime.getRuntime().exec("/usr/bin/perl myPerl.pl");
Hoặc tôi có hiểu nhầm câu hỏi không?
Tôi đã sử dụng Inline :: Java một chút, và thấy nó hơi khó sử dụng, nếu tôi có thời gian, tôi có thể reimplement sử dụng dịch vụ web và gọi mã perl theo cách đó.
Tôi tìm thấy một thi trên JavaWorld bởi Robert Lawson, trong đó sử dụng XML-RPC để gọi thói quen Perl từ mã Java của bạn: Call Perl routines from Java
Ngủ là một ngôn ngữ kịch bản với một thông dịch chạy trong JVM. Từ những gì tôi hiểu ngôn ngữ Sleep về cơ bản là Perl với một số phần mở rộng. Mã của bạn có thể chạy trong chế độ Ngủ. Nếu có, bạn có thể khởi tạo trình thông dịch, chạy mã và truy xuất kết quả.
Chế độ ngủ không thể chạy bất kỳ mã Perl thú vị nào do tính không tương thích của nó. Bạn không thể thay thế Sleep cho Perl. – daxim
Tôi biết điều này là cũ, nhưng gần đây tôi đã gặp các nhu cầu tương tự. Tôi đã tìm thấy JPerl thuận tiện hơn rồi Inline::Java::PerlInterpreter
.
Đoán nó thực sự phụ thuộc vào những gì mã perl của bạn, và những gì bạn đang cố gắng để làm ..
Nếu chỉ sử dụng exec() là quá đơn giản, một cái gì đó giống như gearman có thể là hữu ích
Rakudo cho phép bạn chạy Perl6 bên trong một JVM, và có một Perl5 add-on cho phép bạn chạy mã cũ nhất, mặc dù không có XS của khóa học. Ngoài ra còn có JERL chạy vi điều khiển hiện tại bên trong JVM. Nó phụ thuộc rất nhiều vào những gì bạn đang tìm kiếm để làm, nhưng đó là giá trị kiểm tra ra.
- 1. Tôi có thể gọi Ruby từ Node.js bằng cách nào?
- 2. Tôi có thể gọi mã .NET từ Java bằng cách nào?
- 3. Làm cách nào để tôi có thể nhập đường dẫn vào lệnh Java từ Perl?
- 4. Gọi một lớp java từ perl
- 5. Tôi có thể sử dụng thư viện Perl từ PHP bằng cách nào?
- 6. Tôi nên gọi một Kịch bản Perl bằng Java như thế nào?
- 7. Làm thế nào tôi có thể gọi một tập lệnh PHP từ Perl?
- 8. Tôi có thể chụp ảnh màn hình các trang web bằng Perl bằng cách nào?
- 9. Tôi có thể gọi chương trình python từ VBA bằng cách nào?
- 10. Gọi perl từ php?
- 11. Làm thế nào tôi có thể gọi VBScript từ Javascript
- 12. Làm cách nào để tôi có thể đặt quyền đối với tệp từ Perl?
- 13. Làm cách nào để tôi có thể đặt mã perl nội tuyến bằng html, như php?
- 14. Tôi có thể tham chiếu đến chương trình con Perl bằng cách nào?
- 15. Tôi có thể bắt đầu với Perl 6 bằng cách nào?
- 16. Làm thế nào tôi có thể gọi ActivateKeyboardLayout từ 64bit Windows Vista bằng VBA
- 17. Tôi có thể viết GEOTIFF bằng Java như thế nào?
- 18. Tôi làm cách nào để gọi một tập lệnh Perl từ PHP?
- 19. Tôi có thể xử lý các phiên web bằng CGI :: Session bằng Perl như thế nào?
- 20. Trong Perl, làm thế nào tôi có thể gọi một phương thức có tên tôi có trong một chuỗi?
- 21. Tôi có thể trích xuất Bảng từ PDF bằng Perl không?
- 22. Tôi có thể nhập html bằng php bằng cách nào?
- 23. Tôi có thể kiểm tra GC bằng cách nào?
- 24. Làm thế nào tôi có thể xuất UTF-8 từ Perl?
- 25. gọi hàm java từ c bằng cách sử dụng jni
- 26. Làm thế nào tôi có thể bắt đầu ra từ một con cá chép trong Perl?
- 27. Tôi có thể đọc tệp bằng Ruby bằng cách nào?
- 28. Có thể gọi API COM từ Java không?
- 29. Gọi Python bằng Java?
- 30. Làm thế nào tôi có thể trích xuất các chất nền từ một chuỗi trong Perl?
có cần truyền dữ liệu từ perl trở lại java không? đó thường là nơi các vấn đề/khó khăn xảy ra, nếu không, nó sẽ là vấn đề mở một tiến trình và thực thi kịch bản perl. – Chii