Шаг 147.
Опции командной строки

    На этом шаге мы рассмотрим опции командной строки.

    Наиболее общая форма синтаксиса строки запуска интерпретатора perl имеет следующий вид:

  perl [опции] [ -- ] [файл программы] [параметры программы]

    Опции perl задаются сразу же после имени интерпретатора и представляют собой двухсимвольные последовательности, начинающиеся с дефиса "-":

  perl -а -р prog.pl  filel file2

    Некоторым из них может потребоваться передать параметры, которые задаются непосредственно после соответствующих опций:

  perl -w -I/usr/include -0055  prog.pl  filel file2

    Опции без параметров можно группировать, задавая целую группу с одним дефисом. Следующие вызовы perl эквивалентны:

  perl -wd  prog.pl  filel file2 
  perl -w -d  prog.pl  filel file2

    Опции с параметрами таким способом задавать нельзя. Можно, однако, одну опцию с параметром добавить в конец группы опций без параметров:

  perl -wdI/usr/include -0055  prog.pl  filel  file2

    Передать опции для установки соответствующего режима работы интерпретатора можно непосредственно и из самой программы Perl. Первая строка сценария со специальным комментарием #! предназначена именно для этой цели:

  #!/usr/bin/perl -w -d -I/usr/include

    Теперь перечислим существующие опции и разберем, как они влияют на режим работы интерпретатора. В таблице 1 представлены все опции с их кратким описанием.

Таблица 1. Опции командной строки
Опция Назначение
-0[nnn] Задает разделитель записей файла ввода, устанавливая значение специальной переменной $/. Необязательный параметр nnn - восьмеричный код символа; если отсутствует, принимается равным 0 (код символа \0). Эта опция удобна, если при каждом запуске сценария Perl в него необходимо передавать файлы с разными символами завершения записи
-a Включает режим авторазбиения строки ввода при совместном использовании с опцией -n или -p (строка передается функции split(), а результат ее выполнения помещается в специальный массив @F). Умалчиваемый разделитель - пробел; опция -F позволяет задать регулярное выражение для иного разделителя
Проверка синтаксиса программы без ее выполнения (блоки BEGIN, END и use выполняются, так как это необходимо для процесса компиляции)
-d[:модуль] Запускает сценарий в режиме отладки под управлением модуля отладки или трассировки, установленного как Devel::модуль
-D[число/список] Устанавливает флаги отладки
-e 'строка_кода' Выполнение строки кода Perl, заданной параметром этой опции, а не файла сценария файл_программы, указанного в командной строке вызова интерпретатора. В строке кода можно задать несколько операторов, разделенных символом ';'. Допускается задание нескольких опций . (В Windows строка кода задается в двойных кавычках и для использования самих кавычек в коде Perl необходимо применять управляющую последовательность \".)
-F/рег_выраж/ Задает регулярное выражение для разделителя при автоматической разбивке строки файла ввода в случае задания опции . Например, -F/:+/ определяет в качестве разделителя одно или более двоеточий. По умолчанию используется пробел / /. Символы "/" при задании рег_выраж не обязательны
-i[расширение] Задает режим редактирования по месту файла, переданного как параметр в сценарий Perl. Используется совместно с опциями -n или . Редактирование выполняется по следующей схеме: файл переименовывается (если задано расширение), открывается файл вывода с именем исходного файла и все операции print() сценария осуществляют вывод в этот новый файл.

    Параметр расширение используется для задания имени копии файла по следующей схеме: если в нем нет символов "*", то оно добавляется в конец имени исходного файла; каждый символ "*" этого параметра заменяется именем исходного файла

-Iкаталог Задает каталог поиска сценариев Perl, выполняемых операциями do, require и use (сохраняется как элемент специального массива @INC). Также задает каталоги размещения файлов, включаемых в сценарий Perl директивой #include препроцессора С. Можно использовать несколько опций для задания необходимого количества каталогов поиска
-l[nnn] Включает автоматическую обработку концов строк ввода. Работа в этом режиме преследует две цели:
  1. Автоматическое удаление завершающего символа записи, хранящегося в специальной переменной $/, при включенном режиме -n или -p;
  2. Присваивание специальной переменной $\, в которой хранится символ завершения записи при выводе операторами print, восьмеричного значения nnn, представляющего код символа завершения; если этот параметр не задан, то переменной $\ присваивается текущее значение $/.
-m[-]модуль
-М[-]модуль
-[mМ] [-] модуль= пар1[,пар2]
Выполняет оператор use module() (опция -m) или use module (опция -M) перед выполнением сценария Perl. Если параметр модуль задан с дефисом, то use заменяется на no. Третья форма этих опций позволяет передать параметры в модуль при его загрузке
-n Заданный сценарий Perl выполняется в цикле
  while (<>) {
      сценарий Perl
  }
Это позволяет обработать программой Perl в цикле каждую строку всех файлов, имена которых переданы в качестве параметров сценария Perl. Эта опция эмулирует функциональность sed с ключом -n и awk
-p Аналогичен опции -n, но добавляется печать каждой обрабатываемой строки, как в редакторе sed:
  while (<>) {
      сценарий Perl
  } continue  {
      print  or die  "-p destination:   $!\n";
  }
-P Перед компиляцией сценарий Perl обрабатывается препроцессором С, что позволяет использовать в нем команды препроцессора #define, #include и все команды условной компиляции С (#if, #else и т.д.). В опции -I можно задать каталоги расположения файлов, включаемых командой #include
-s Включает режим синтаксического анализа строки вызова сценария Perl на наличие после имени файла сценария, но до параметров имен файлов "пользовательских опций" (параметров, начинающихся с дефиса). Такие параметры извлекаются из массива @ARGV и в программе объявляются и определяются переменные с именами введенных опций. Следующий сценарий напечатает "Задана опция opt1" тогда и только тогда, когда он будет вызван с опцией -opt1:
#! perl -w -s
if   ($opt1) {print   "Задана  опция opt1\n"; }
-S Поиск файла программы Perl файл_программы осуществляется с использованием значения переменной среды PATH
-T Включает режим проверки на безопасность полученных извне данных в операциях с файловой системой. Полезен при реализации CGI-сценариев. Эта опция должна быть первой в списке опций интерпретатора perl, если она применяется к сценарию
-u Создание дампа ядра после компиляции сценария Perl. Последующее использование программы undump позволяет создать двоичный выполняемый файл сценария
-U Разрешает выполнение небезопасных операций. При использовании этой опции в UNIX программа Perl выполняется в незащищенном режиме и ей предоставляется полный доступ к файловой системе
-v Отображает номер версии, а также другую важную информацию об интерпретаторе perl
-V[:переменная] Отображает информацию конфигурации интерпретатора perl (расположение необходимых библиотек, значения переменных среды и т. д.). Если задано имя переменной среды, отображает ее установленное значение
-w Включает режим отображения предупреждений во время компиляции программы Perl. Рекомендуется всегда применять эту опцию
-x[каталог] Извлекает и выполняет сценарий Perl, расположенный в текстовом файле. Эта возможность удобна, если сценарий прислан по электронной почте. Интерпретатор сканирует файл, пока не найдет строку, начинающуюся с символов "#!" и содержащую слово "perl". После этого выполняется сценарий до лексемы __END__. Если задан параметр каталог, то перед выполнением сценария он становится текущим

    Как видно из таблицы 1, интерпретатор perl располагает достаточно большим набором опций, разработанных специально в помощь системному администратору UNIX. Эти опции позволяют решать задачи, даже не прибегая к созданию текстового файла сценария Perl.

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг