Почему я получаю "Не могу найти ограничитель строк" "где-нибудь перед EOF на -e строке 1", когда я пытаюсь запустить однострочный Perl в Windows?
Я пытаюсь запустить следующее в Windows с 5.14.2
C:\Perl>perl -e 'print "Hello World \n"'
Can't find string terminator "'" anywhere before EOF at -e line 1.
Что мне не хватает?
Ответ 1
Вам не хватает достойной оболочки с разумными и четко определенными правилами цитирования. В Windows только двойная кавычка считается цитатой, а правила экранирования плохо определены и непоследовательны. Попробуйте:
perl -e "print qq{Hello World \n}"
Я настоятельно рекомендую избегать ничего, кроме самых простых однострочных в Windows. (Еще одна проблема с однострочными окнами Windows заключается в том, что оболочка Windows не расширяет подстановочные знаки. Если вы используете *.txt в командной строке, он будет искать файл с буквальным именем *.txt..)
В Windows то, что вы набрали, эквивалентно:
perl -e "'print" "Hello World \n'"
То есть, код Perl пытается выполнить 'print с @ARGV, содержащим единственную строку Hello World \n'. (Это не новая строка, обратная косая черта, за которой следует n).
Ответ 2
В Windows кавычки следует поменять местами. Итак, а не: