Начинающим Web - разработчикам сайтов

Категории
Полезные сайты
Подпрограммы
Основные понятия
Синтаксис языка Perl
Переменные
Встроенные переменные
Шаблоны
      Операторы ( 1 стр. )
Операторы ( 2 стр. )
Встроенные функции - 1
Встроенные функции -2
Подпрограммы и др.

Подпрограммы

Подпрограммы могут находиться как в текущем файле (модуле), так и во внешнем. Перед тем, как вызвать подпрограмму, её можно задекларировать в основной программе. Это делается так:

  • sub NAME; - декларация только имени подпрограммы
  • sub NAME BLOCK; - декларация с определением
  • sub BLOCK; - анонимная декларация

Вызываются подпрограммы следующим образом::

& NAME ( LIST ) ,

где NAME - имя вызываемой подпрограммы; LIST - список назначенных параметров для этой подпрограммы, который обрабатывается как массив @_. Префиск & и круглые скобки можно не использовать, но тогда декларация обязательна.

Вызов подпрограмм из других модулей выглядет так: use модуль qw(NAME1, NAME2, NAME3).

Использовать переменные внутри одной подпрограммы или модуля можно двумя способами. Частный или приватный представляет собой декларирование переменных посредством функции my() . Второй способ является локальным и применяется только для переменных форматов (в циклах использовать не рекомендуется). Декларируются такие переменные с помощью функции local().

В языке Perl для укороченного описания типов параметров, которые указываются подпрограмме, предусмотрены сокращения. Выглядет это следующим образом - предварительно декларируется ( sub my _функция (символы-сокращения)), а затем, в нужном месте, непосредственно сам вызов. К символам-сокращениям в данных описаниях относятся:

  • \ - обозначает, что бдет применяться параметр с типом 'символ'
  • $ - описание, как скаляра
  • @ или % - оставшиеся параметры будут обрабатываться как список
  • ; - разделят обязательные и не обязательные параметры между собой
  • * - тип описания имен (например: handle, writehandle и т. д.)
  • & - анонимная подпрограмма

Приведем пример:

sub mygrep(&@) # декларация
mygrep { /good/ } $var1, $var2, $var3 # вызов

В языке Perl можно не только передавать подпрограмме значения элементов массива, но и делать ссылку на него. Причем в этом случае, подпрограмма может менять значения указанного массива. Ссылка делается путем добавления символа "*" (звездочка) к имени переменной и действует для всех элементов массива, кроме скалярных. Изменять скаляры можно, например, с помощью переменной $_[ ].

Модули (пакеты)

Модуль - это несколько подпрограмм и переменных, находящихся в одном файле. В одном модуле может находиться другой (по аналогии табличного принципа в построении web-страницы). Начало модуля указывается в коде програвммы так: packages имя_модуля, а концом модуля будет являться конец блока или файла. Имя для основного модуля по умолчанию устанавливается main . Кроме того это имя в пределах модуля можно не указывать, а просто ссылаться на него с помощи установки вместо main двух двоеточий ( :: ).

Текущий пакет поддерживает хранение имен переменных только тех, которые начинаются с буквы или " _ ". Остальные переменные будут находиться в пакете main . Кроме них там же хранятся и имена STDIN, STDOUT, STDERR, ARGV, ARGVOUT, ENV, INC и SIG .

В модуле предусмотрены выполнение двух специальных подпрограмм с именами BEDIN - конструктор создания объекта и END - деструктор (удаление объекта). Конструктор обрабатывается компилятором сразу (до окончания полного сканирования подпрограммы), как будет обнаружен. Деструктор будет выполнен при окончании работы интерпритатора.

Если говорить о классах, то в языке Perl модули могут быть реализованы классами и вэтом случае подпрограммы модуля будут являться методами. Массив @ISA использует принцип построения наследования в классах.

Форматы

Язык Perl имеет встроенные возможности по созданию форматированного абзаца. Сначала для этого применяется оператор format , который содержит рамеры отступов, нужное положения и рамеры текстовой информации, а затем, посредством функции write файл , всё в нужном виде переходит в назначенный файл.

Оператор format в программах применяется в следующем виде:

format имя =
FORMLIST (строки формата)

где имя - имя формата (при отсутствии действует значение STDOUT ).

FORMLIST может быть комментарием с обозначением " # ", указателем форматирования полей со строками числовых аргументов, либо без них. Для обозначения последнего применяются следующие символы:

  • >>>> - применять значение, относительно левого края
  • <<<< - применять значение, относительно правого края
  • IIII - применять значение, относительно центра
  • ####.### - числа с точкой
  • @* - вывод значений в столбик,

где колличество символов является размером.

Каждое новое поле начинается с символа " @" или " ^ ". При применении последнего назначаются специфические значения:

  • ^#### - символы не выводятся, если переменная не найдена.
  • ^<<<<< - вывод в строку максимального колличество символов и перевод остаточного колличества в значение переменной, которая интерпритирует их в последующих строках, при условии наличия собственных полей.

При форматировании листов используются такие переменные, как:

  • $^ - формат заголовка
  • $~ - формат для строк
  • $% - номер листа
  • $= - колличество строк в листе

Отладчик

Язык Perl в своем "арсенале" имеет виртуальный отладчик, обращаясь к которому можно полностью протестировать программу на наличие ошибок, а также просмотреть её "изнутри". Для вызова отладчика нужно запустить программу с ключом " -d ". При работе с отладчиком используются следующие команды:

Имя

Функция команды

h справка о командах
s исполнение одной команды с последующей остановкой
n завершение работы по окончанию обработки подпрограммы
r что и предыдущая, но в отношении текущей подпрограммы
c выполнение отрезка программы (до следующей точки остановки)
c _номер выполнение до строки с указанном номером
T просмотр стека программы
l _номер вывод строки с указанным номером
l вывод последующего экрана строк
w _строк вывод указанного в " w" экрана строк
l _подпрограмма вывод для просмотра кода соответствующей подпрограммы
l min+incr вывод incr+1 строк от строки min
l min - max вывод строк от min до max
/шаблон/ поиск строки в коде программы
?шаблон? обратный поиск строки в коде программы
S получение имен для всех подпрограмм
L вывод отрезка строк от места остановки до активов
t тумблер трассировки
b подпрограмма [условие] при назначенном условии в начале указанной подпрограмме произойдет остановка
b строка [условие] назначение точки остановки при определенном условии
d исключение точки остановки
D исключение всех точек остановки
a _строка команда Назначение актива, т.е выполнение команды вместе с указанной строкой
A убрать все активы
< команда назначение команды перед каждой остановкой
> команда назначение команды после каждой остановки
! номер обработка только одной строки с указанным номером
! -номер отработка одной команды с предыдущей строки, указанной номером
команда выполнение обычной команды Perl
^D или q выход из программы
H-n показать n-ое колличество отработанных команд
p выражение показать значение выражения
V модуль [имена] показать значение всех, либо указанных имен в этом модуле
X [имена] аналогичен предыдыдущему, но относительно текущего модуля
Начинающим Web - разработчикам сайтов
Rambler's Top100 Рейтинг@Mail.ru
Hosted by uCoz