Использование команд Perl и Unix в Windows [дубликат]

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

Для меня причина в том, что я переименовал файл, и старый файл все еще был открыт.

4
задан DVK 4 December 2010 в 06:24
поделиться

3 ответа

Какая платформа? Если это были Windows и CMD.EXE, тогда всевозможные вещи могли бы пойти не так. На Unix-подобной платформе это должно работать нормально. Нет новой строки в конце, поэтому скорее всего ваше приглашение начнется с «Hello World», но это все.


С комментарием, что это Windows, проблема в том, что Windows CMD .EXE не анализирует командную строку так же, как Unix, и вы не можете просто использовать одинарные кавычки вокруг аргументов; вам нужно использовать двойные кавычки. Попробуйте:

perl -e "print qq{Hello World\n}"

Есть скромная вероятность, что он будет работать для вас.

11
ответ дан Jonathan Leffler 27 August 2018 в 06:26
поделиться

Попробуйте: perl -e " print 'Hello..'; " Это работает в консоли Windows CMD.EXE, где цитирование не стандартизировано POSIX.

0
ответ дан G. Cito 27 August 2018 в 06:26
поделиться

Из perldoc perlfaq3 - Почему в моей системе DOS / Mac / VMS не работают однострочные Perl?

Обычно проблема заключается в том, что команда переводчики на этих системах имеют совершенно иные представления о цитировании, чем оболочки Unix, под которыми создавались однострочные. В некоторых системах вам, возможно, придется сменить одиночные кавычки на двойные, которые вы НЕ ДОЛЖНЫ делать в системах Unix или Plan9. Возможно, вам также придется сменить один % на %%. Например:

# Unix (including Mac OS X)
perl -e 'print "Hello world\n"'

# DOS, etc.
perl -e "print \"Hello world\n\""

# Mac Classic
print "Hello world\n"
 (then Run "Myscript" or Shift-Command-R)

# MPW
perl -e 'print "Hello world\n"'

# VMS
perl -e "print ""Hello world\n"""

Проблема в том, что ни один из этих примеров не является надежным: они зависят от командного интерпретатора. В Unix работают первые два. В DOS вполне возможно, что ни одна из них не работает. Если 4DOS была командной оболочкой, вам, вероятно, повезло бы так:

perl -e "print <Ctrl-x>"Hello world\n<Ctrl-x>""

Под Mac это зависит от того, какую среду вы используете. Оболочка MacPerl или MPW очень похожа на Unix-оболочки в поддержке нескольких вариантов кавычек, за исключением того, что в качестве управляющих символов свободно используются символы не ASCII Mac.

Используя qq(), q() и qx(), вместо «двойных кавычек», «одиночных кавычек» и backticks, можно упростить запись в один ряд. Для всего этого нет общего решения. Это беспорядок.

6
ответ дан Zaid 27 August 2018 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: