Входным аргументом является файл или содержимое Perl - PullRequest
0 голосов
/ 17 июня 2019

Я написал Perl-скрипт для преобразования из формата TEX в формат JSON.

Вызов в командном файле:

 perl -w C:\test\support.pl TestingSample.tex

Теперь все работает нормально.

Perl-скрипт, имеющий два типа ввода из другой программы (может быть, любая платформа / технология), один из которых - файл (* TEX) или другое содержимое (* TEX-файл) или та или иная опция .

Как получить полный контент в качестве входных данных для сценария Perl?

Теперь мой Perl-скрипт:

 my $texfile = $ARGV[0]; my $texcnt = "";
 readFileinString($texfile, \$texcnt);

Я пытаюсь обновить:

 perl -w C:/test/support.pl --input $texcnt" #Content is Input

Я получаю сообщение об ошибке:

 The command line is too long.

Может кто-нибудь, пожалуйста, совет?

1 Ответ

0 голосов
/ 17 июня 2019

Прежде всего, относительно ошибки, которую вы получаете: Perl (или ваша оболочка) жалуется на то, что ваш входной аргумент слишком длинный.

В любом случае парсинг целых файлов в качестве аргументов сценариям вообще плохая идея,например, экранирование кавычки и т. д. может не обрабатываться и, таким образом, оставит широко открытой уязвимость для всей вашей системы !

Так что решение этой проблемы состоит в том, чтобы изменить ваш скрипт так, чтобы он мог приниматьфайл в качестве аргумента (если это еще не так) и если вам действительно нужно проанализировать содержимое всего файла в качестве аргумента, я бы посоветовал вам создать временный файл в /tmp/ (если в Linux)или в вашем каталоге %TEMP% в Windows и проанализируйте содержимое файла в файл и после этого передайте вашему сценарию support.pl новый временный файл в качестве аргумента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...