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

Синтаксис запуска интерпретатора Perl:

perl [ключи] файл аргументы

Перед стартом Perl ищет скрипт (программу) в следующем порядке:

  1. В командной строке если указан ключ '-e'
  2. Содержимое файла указанного в командной строке. В первой строке можно указывать #!/usr/bin/perl для "автоматического" запуска скрипта.
  3. Стандартный ввод/вывод, если не указан файл или аргументы, содержащие имя файла. Для передачи аргументов скрипту из стандартного потока, имя файла в командной строке обозначается символом '-'.

В методах 1 и 2 Perl сканирует строки, начиная с первой, если не указан ключ '-x', в противном случае началом программы считается строка с символами '#!' в начале и содержащая слово 'perl'. Концом программы считается строка 'END'. В строке с '#!' можно указывать и ключи. Например '#!/bin/perl -d' для отладки программ.

После "обнаружения" скрипта Perl компилирует его целиком во внутреннее представление. Если обнаруживаются ошибки, то выполнение прекращается. Если ошибок нет, он выполняется. Если скрипт заканчивается без команд exit() или die(), то по умолчанию выполняется команда exit(0), обозначающая нормальное завершение программы.

Чтобы заменить foo на bar в нескольких файлах, выполните следующую команду Perl:

> perl -pi~ -e 's/foo/bar/' [files]
  • ключ p означает, что подстановка выполняется в каждой строке указанного файла
  • ключ i означает, что после подстановки результаты записываются обратно в файл

Как использовать Perl в командной строке для поиска выходных данных других программ?

Добавить к именам файлов, имена которых начинаются с цифр, расширение «bak»: Код для Unix дистрибутивов:

ls | perl -lne 'rename $_, "$_.bak" if /^\d+/'

Код для Windows с установленным интерпретатором Perl:

dir /b | perl 	-lne "rename $_, \"$_.bak\" if /^\d+/"
open my $pipe, "$command |";
while (<$pipe>) {
    # do stuff
}
close $pipe;

Этот код позволяет

  1. избежать сбора всех выходных данных команды в память сразу
  2. дает вам более точный контроль над выполнением команды. Например, вы можете избежать того, чтобы команда была проанализирована shell.
  • Крупнейшая в Европе школа английского языка

    Промокоды, акции и подарки, чтобы Ваше обучение было не только интересным, но и выгодным. Закажите пробный урок уже сейчас!

    skyeng.ru
  • Онлайн школа английского языка

    Английский по скайпу от 680р за урок, без заучивания правил. Эффективно! Удобно! Выгодно! Начните обучение прямо сейчас.

    melene.ru
  • Школа английского языка по Skype

    Персональные занятия по разумным ценам. Бесплатные ресурсы для студентов: разговорные клубы, блог, вебинары, книги, тест на определение уровня английского. Пробный урок бесплатно!

    englex.ru