Вы составляете одну строку и передаете ее в Run
, которая затем, по-видимому (какой это язык и платформа?) Передает ее интерпретатору командной строки (cmd
? /bin/sh
?), Который анализирует эту команду line, интерпретирует его как имя и аргументы команды и вызывает команду с аргументами.
Интерпретатор командной строки имеет свои специальные символы со специальными значениями, например <
, поэтому все вхождения таких символов должны быть надлежащим образом экранированы или заключены в кавычки с использованием любого метода, поддерживаемого интерпретатором командной строки, для передачи до командования целыми и невредимыми. Кроме того, интерпретатор командной строки будет иметь определенные ожидания от используемого набора символов, который, вероятно, не будет поддерживаться для входных строк, которые все являются UTF-16 или, что еще хуже, смесью UTF-16 и чего-то еще.
Если вы не можете изменить скрипт Perl: отключите интерпретатор командной строки, используя вариант с несколькими аргументами Run
, который напрямую вызывает команду с аргументами.
Если вы можете изменить скрипт Perl: делайте так, как это делают профессионалы, и заставляйте его читать входные данные из стандартного ввода, а не из аргументов командной строки.
Другая идея состоит в том, чтобы не смешивать XML с не-XML, чтобы вы могли использовать правильную библиотеку XML, такую как XML :: LibXML , для анализа ввода, который позаботится о любых дальнейших проблемах цитирования / экранирования. для содержимого XML.