Поиск…


Выполнить некоторый код Perl из командной строки

Простые однострочные могут быть указаны в качестве аргументов командной строки для perl, используя ключ -e (подумайте «выполнить»):

perl -e'print "Hello, World!\n"'

Из-за правил цитирования Windows вы не можете использовать строки с одним кавычком, но должны использовать один из этих вариантов:

perl -e"print qq(Hello, World!\n)"
perl -e"print \"Hello, World!\n\""

Обратите внимание, что во избежание нарушения старого кода, с -e можно использовать только синтаксис, доступный до Perl 5.8.x. Чтобы использовать что-либо новое, версия вашего perl может поддерживать, вместо этого используйте -E . Например, использовать значение say доступное от 5.10.0, плюс Unicode 6.0 от> = v5.14.0 (также использует -CO чтобы убедиться, что STDOUT печатает UTF-8):

5.14.0
perl -CO -E'say "\N{PILE OF POO}"'

Использование строк с двойными кавычками в однострочных окнах Windows

Для использования параметров командной строки Windows использует только двойные кавычки. Чтобы использовать двойные кавычки в perl one-liner (т. Е. Для печати строки с интерполированной переменной), вы должны избегать их с помощью обратных косых черт:

perl -e "my $greeting = 'Hello'; print \"$greeting, world!\n\""

Чтобы улучшить читаемость, вы можете использовать оператор qq() :

perl -e "my $greeting = 'Hello'; print qq($greeting, world!\n)"

Печатать строки, соответствующие шаблону (PCRE grep)

perl -ne'print if /foo/' file.txt

Без учета регистра:

perl -ne'print if /foo/i' file.txt

Замените подстроку другим (PCRE sed)

perl -pe"s/foo/bar/g" file.txt

Или на месте:

perl -i -pe's/foo/bar/g' file.txt

В Windows:

perl -i.bak -pe"s/foo/bar/g" file.txt

Печать только определенных полей

perl -lane'print "$F[0] $F[-1]"' data.txt
# prints the first and the last fields of a space delimited record

Пример CSV:

perl -F, -lane'print "$F[0] $F[-1]"' data.csv

Печатать строки от 5 до 10

perl -ne'print if 5..10' file.txt

Редактировать файл на месте

Без резервной копии ( не поддерживается в Windows )

perl -i -pe's/foo/bar/g' file.txt

С резервной копией file.txt.bak

perl -i.bak -pe's/foo/bar/g' file.txt

С резервной копией old_file.txt.orig в подкаталог backup (при условии, что последний существует):

perl -i'backup/old_*.orig' -pe's/foo/bar/g' file.txt

Чтение всего файла в виде строки

perl -0777 -ne'print "The whole file as a string: --->$_<---\n"'

Примечание: -0777 - это просто соглашение. Любой -0400 и выше будет то же самое.

Загрузить файл в mojolicious

perl -Mojo -E 'p("http://localhost:3000" => form => {Input_Type => "XML", Input_File => {file => "d:/xml/test.xml"}})'

Файл d:/xml/test.xml будет загружен на сервер, который прослушивает подключения на localhost:3000 ( Source )

В этом примере:

-Mmodule выполняет use module; перед выполнением вашей программы
-E commandline используется для ввода одной строки программы
Если у вас нет модуля ojo вы можете использовать cpanm ojo для ее установки

Чтобы узнать больше о том, как запустить perl, используйте perldoc perlrun или прочитайте здесь



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow