Я пытаюсь выполнить свой Perl-скрипт из Java-программы.Я уже установил Perl на свой компьютер.Ниже приведен мой пример Perl-файла (test.pl
).
#!/usr/bin/perl -w
use 5.010;
use strict;
use warnings;
use Path::Tiny;
use autodie;
my $dir = path("E:/perl/scripts");
my $file = $dir->child("file.txt");
my $file_handle = $file->openw_utf8();
my @list=('a', 'list', 'of', 'lines');
push @list,<*.doc>;
push @list,<*.pdf>;
push @list,<*.jpg>;
push @list,<*.pl>;
print "Value of list = @list \n";
И это мой Java-код для выполнения сценария Perl.
Process process;
try {
process = Runtime.getRuntime().exec("cmd /c perl E:\\perl\\PerlCallbyServlet\\test.pl");
//process = Runtime.getRuntime().exec("perl E:\\perl\\PerlCallbyServlet\\test.pl");
process.waitFor();
if (process.exitValue() == 0) {
System.out.println("Command Successful");
try {
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("Command Failure");
}
} catch (Exception e) {
System.out.println("Exception: " + e.toString());
}
Теперь сначала, когда я пытаюсь запустить этотКласс Java, который я получаю ниже вывода.
Command Successful
Value of list = a list of lines
Но когда я запускаю этот скрипт из командной строки, используя команду
perl test.pl
Мой вывод такой, как показано ниже:
Value of list = a list of lines one.doc test.pl photo.jpg
Таким образом, я не получаю такой же вывод скрипта Perl, выполняемого из Java-программы, как из командной строки.