Я думаю, здесь есть пара проблем. Во-первых, кавычки имеют символическое значение как в powershell, так и в perl. Кавычки и экранирование работают немного в PowerShell, чем в оболочке UNIX. Проверьте man about_quoting в powershell.
Вторая проблема заключается в том, что командная строка perl ведет себя по-разному в период Windows. Любая двойная кавычка внутри командной строки, которую вы хотите передать в perl, должна быть экранирована в терминах perl как \ ". Это не относится к powershell. Это способ работы perl в Windows. Обычно у вас возникают подобные проблемы с cmd.exe.
Эти версии должны работать:
PS> & perl -e "print \`"hello, world\n\`""
hello, world
PS> $s = "print \`"hello, world\n\`""
PS> echo $s
print \"hello, world\n\"
PS> & perl -e $s
hello, world
Вы можете сделать то же самое с меньшим количеством экранирования, используя одинарные кавычки.
PS> & perl -e 'print \"hello, world\n\"'
hello, world
PS> $s = 'print \"hello, world\n\"'
PS> echo $s
print \"hello, world\n\"
PS> & perl -e $s
hello, world
Вы также можете поместить новую строку в powershell вместо передачи escape-последовательности новой строки в perl для анализа.
PS> & perl -e "print \`"hello, world`n\`""
hello, world
PS> $s = "print \`"hello, world`n\`""
PS> echo $s
print \"hello, world
\"
PS> & perl -e $s
hello, world