вызвать файл jar (java file) из скрипта perl - PullRequest
1 голос
/ 15 марта 2020

Я использую eclipse, и мне нужно вызвать файл jar из сценария perl.

#!"C:\xampp\perl\bin\perl.exe"
print "Content-Type: text/html\n\n";
my @args = ("java", "-jar", "C:\Users\RajendraPrasadH\eclipseworkspace\ApplicationProtector\target\ApplicationProtector-0.0.1-SNAPSHOT.jar");
system(@args);

это код, который я использовал в моем файле perl (echo.pl) для вызвать файл jar, может кто-нибудь сказать мне, есть ли какая-либо ошибка в этом "C: \ Users \ RajendraPrasadH \ eclipseworkspace \ ApplicationProtector \ target \ ApplicationProtector-0.0.1-SNAPSHOT.jar" это путь, по которому файл jar подарок .

1 Ответ

1 голос
/ 15 марта 2020

Код OP идеален двойные кавычки случай неправильного использования, use strict и use warnings будут сигнализировать о потенциальной проблеме

use strict;
use warnings;
use feature 'say';

print "Content-Type: text/html\n\n";
my @args = ("java", "-jar", "C:\Users\RajendraPrasadH\eclipseworkspace\ApplicationProtector\target\ApplicationProtector-0.0.1-SNAPSHOT.jar");

say for @args;

Выход

Unrecognized escape \R passed through at misuse_double_quote_1.pl line 6.
Unrecognized escape \A passed through at misuse_double_quote_1.pl line 6.
Unrecognized escape \A passed through at misuse_double_quote_1.pl line 6.
Content-Type: text/html

java
-jar
C:SERSRAJENDRAPRASADHCLIPSEWORKSPACEAPPLICATIONPROTECTOR       ARGETAPPLICATIONPROTECTOR-0.0.1-SNAPSHOT.JAR

Perl интерпретатор выполнил интерполяцию строки в двойных кавычках путем расширения backsha sh sequence .

Правильный код для @args = ('...','...','...')

use strict;
use warnings;
use feature 'say';

print "Content-Type: text/html\n\n";
my @args = ('java', '-jar', 'C:\Users\RajendraPrasadH\eclipseworkspace\ApplicationProtector\target\ApplicationProtector-0.0.1-SNAPSHOT.jar');
say for @args;

Вывод

Content-Type: text/html

java
-jar
C:\Users\RajendraPrasadH\eclipseworkspace\ApplicationProtector\target\ApplicationProtector-0.0.1-SNAPSHOT.jar

Более естественным способом было бы написать код как

use strict;
use warnings;
use feature 'say';

say "Content-Type: text/html\n";
my @args = qw/java -jar C:\Users\RajendraPrasadH\eclipseworkspace\ApplicationProtector\target\ApplicationProtector-0.0.1-SNAPSHOT.jar/;

say for @args;

system(@args);

Вывод

Content-Type: text/html

java
-jar
C:\Users\RajendraPrasadH\eclipseworkspace\ApplicationProtector\target\ApplicationProtector-0.0.1-SNAPSHOT.jar
...