Внутри одной строки я склонен использовать обобщенные кавычки , чтобы избежать этих проблем:
$ perl -e "print lc qq(Hello-World\n)"
Если двойные кавычки существуют только для новой строки, вы можете использовать *Переключатель 1006 * для добавления новой строки к каждому print
(но не printf
):
$ perl -le "print lc 'Hello-World'"
С помощью -E
вы можете включить функции v5.10, включая say
, что также добавляетновая строка для вывода:
$ perl -E "say lc 'Hello-World'"
Вы пометили это как macOS
, что означает, что вы можете использовать одинарные кавычки для аргумента -e
(Windows не допускает этого):
$ perl -e 'print lc qq(Hello-World\n)'
$ perl -e 'print lc "Hello-World\n"'
Внутри двойных кавычек в Unix-подобной оболочке вещи, начинающиеся с $
, являются переменными.Это терпит неудачу, потому что оболочка интерполирует $HOME
до того, как Perl даже увидит строку программы (это print /Users/brian
).Это глупый пример, но он показывает проблему:
$ perl -le "print $HOME"
Unknown regexp modifier "/b" at -e line 1, at end of line
Unknown regexp modifier "/r" at -e line 1, at end of line
-e had compilation errors.
Либо экранируйте $
, либо используйте одинарные кавычки:
$ perl -le "print \$HOME"
$ perl -le 'print $HOME'