На этом шаге мы рассмотрим понятие и назначение прагма-библиотеки.
Многие языки программирования позволяют управлять процессом компиляции посредством директив компилятора. В языке Perl эта возможность реализована при помощи так называемых прагма-библиотек. В современной терминологии, связанной с программированием, слово "pragma" используется для обозначения понятия, смысл которого в русском языке выражается сочетанием "директива компилятора". В языке Perl термин "pragma" обозначает модуль, содержащий коллекцию подпрограмм, используемых на этапе компиляции. Его назначение - передать компилятору информацию о том, как модифицировать процесс компиляции. Поскольку сочетание "библиотека директив компилятора" звучит несколько тяжеловато, мы используем для обозначения таких модулей название "прагма-библиотека".
Как и остальные модули, прагма-библиотека подключается к основной программе при помощи директивы use и выполняет функцию директивы компилятора. Область действия большинства таких директив ограничена, как правило, блоком, в котором они встречаются. Для отмены соответствующей директивы используется функция no.
Например, для ускорения выполнения некоторых отрезков программы можно заставить компилятор использовать целочисленную арифметику вместо принятой по умолчанию арифметики с плавающей точкой, а затем снова вернуться к последней.
#! perl -w
print "Арифметика с плавающей точкой: 2/3= ", 2/3, "\n";
use integer;
print "Целочисленная арифметика: 2/3= ",2/3, "\n";
no integer;
print "Возврат к арифметике с плавающей точкой: 2/3= ", 2/3, "\n";
В результате выполнения данного примера будет получен вывод, приведенный на рисунке 1:
Рис.1. Результат работы скрипта
В дистрибутивный комплект Perl входит стандартный набор прагма-библиотек. Некоторые из них представлены в таблице 1.
Прагма-библиотека | Назначение |
---|---|
diagnostics | Включает режим диагностики с выдачей подробных сообщений |
integer | Применение целочисленной арифметики вместо арифметики с плавающей точкой |
overload | Режим переопределения операций Perl, например, директива
package Number; use overload "+" => \&add; |
sigtrap | Директива, позволяющая управлять обработкой сигналов в UNIX |
strict | Режим ограниченного использования "опасных" конструкций Perl
use strict "refs"; use strict "vars"; use strict "subs"; use strict; |
subs | Служит для предварительного объявления подпрограмм,
указанных в списке:
use subs qw(sub1 sub2 sub3); |
vars | Служит для предварительного объявления переменных, указанных в списке
use vars qw($scal @list %hash); |
На следующем шаге мы приведем решение некоторых задач.