www.infocom.ua
Всеукраинский центр хранения данныхВсеукраинский центр хранения данныхВсеукраинский центр хранения данныхВсеукраинский центр хранения данныхВсеукраинский центр хранения данныхИнфоком Дата-Центр
О проектеУслуги и ценыПоддержкаКонтакты

 

 


Введение в Perl. Модули (packages).

  • Таблицы имен

  • Конструкторы и деструкторы

  • Классы

  • Создание библиотеки

  • Pragma библиотеки

  • Стандартные библиотеки
  • CPAN

  • В Perl реализован механизм модулей. Модуль это группа подпрограмм и переменных обычно включенных в один файл. Внутри одного модуля можно определить другой модуль. Начало модуля определяется директивой:

    • packages имя_модуля;

    Конец модуля это конец блока или файла. Головной модуль имеет по умолчанию имя main. На имя внутри модуля можно ссылаться, добавляя '::' после имени модуля.

    Например:

    
    	$main::var1	- переменная в головном модуле.
    ::var1 - то же самое. Имя main можно опускать.
    $модуль1::var1 - переменная в модуле 'модуль1'
    $модуль1::модуль2::var1 - Модуль2 содержится в модуле 1.

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

    Таблицы имен.

    Все имена модуля хранятся в ассоциативном массиве (хеше) с именем модуля, к которому добавлены символы "::". Таким образом имена головного модуля хранятся в %main:: , модуля 'mod1' в %mod1:: и т.д. Выражение вида *имя указывает значение элемента хеша 'имя', это удобно для определения констант.

    Например:

    
    	*pi = \3.14159;
    
    

    Здесь переменная $pi - это константа пи, которую уже нельзя изменить.

    Конструкторы и деструкторы.

    Конструктор - это подпрограмма, которая выполняется в момент создания объекта, а деструктор - удаления объекта. Для модуля это подпрограммы с именами BEGIN и END. При определении этих подпрограмм слово sub можно опускать.

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

    Деструктор END выполняется последним как только возможно, т.е. при завершении работы интерпретатора. Можно указать несколько блоков END, при этом они будут выполняться в обратном определению порядке.

    Классы.

    В Perl нет специального синтаксиса для классов. Но функционально полноценными классами могут быть модули. При этом подпрограммы модуля становятся методами, а с помощью массива @ISA можно реализовать механизм наследования в классах. Более подробно классы описаны отдельно.

    Создание библиотеки.

    Если вы хотите создать модуль отдельным файлом и использовать как библиотеку подпрограмм, при этом вызывать подпрограммы библиотеки, не указывая имени модуля, вам необходимо оформить модуль следующим образом:

    
    	package имя_модуля;	# Такое же как и имя этого файла без расширения '.pm'
    require Exporter; # Обязательная строка для экспорта имен
    @ISA = qw(Exporter); # -//-
    @EXPORT = qw(func1 func2) # Перечисляем имена функций. Внимание ! нет запятой!
    @EXPORT_OK = qw( $переменная @массив ); # Указать публичные переменные, массивы и т.д. если необходимо
    { # Начало блока модуля
    .....
    sub func1
    ........
    sub func2
    ........
    1;
    }

    Данный файл с расширением ".pm" должен храниться в одной из библиотечных директорий Perl. Они перечислены в массиве @INC, одна из них обычно "/usr/local/lib/perl/".

    В головной программе вы указываете:

    • use имя_модуля;

    и вам становятся доступны имена подпрограмм данного модуля.

    Perl библиотеки.

    Стандартный набор библиотек обычно поставляется с дистрибутивом Perl, они разделяются на pragma библиотеки (работают как директивы компилятору) и стандартные библиотеки.

    Pragma библиотеки.

    Данные библиотеки используют как:

    • use имя;

    когда хотят включить действие и

    • no имя;

    когда выключить.

    В стандартный набор входят следующие pragma:

    diagnostics
    Включить режим расширенной диагностики.

    integer
    Использовать целочисленную арифметику.

    less
    Режим минимальной загрузки компилятора.

    overload
    Режим переопределения операторов.

    sigtrap
    Режим слежения за прерываниями.

    strict
    Режим ограниченного использования "опасных" операторов.

    subs
    Режим обязательного декларирования подпрограмм.

    Стандартные библиотеки.

    AnyDBM_File
    Возможность работы с разными типами баз данных.

    AutoLoader
    Загрузка в память функций только во время вызова.

    AutoSplit
    Разделить модуль для автозагрузки.

    Benchmark
    Анализ скорости исполнения программы.

    Carp
    Предупреждения об ошибках.

    Config
    Доступ к конфигурации Perl.

    Cwd
    Получить имя текущей рабочей директории.

    DB_File
    Работа с базой данных формата Berkley DB.

    Devel::SelfStubber
    Режим отладки автозагрузки.

    DynaLoader
    Динамическая загрузка библиотек C.

    English
    Использовать длинные имена встроенных переменных.

    Env
    Импортировать имена переменных окружения

    Exporter
    Обеспечивает экспорт/импорт для модулей.

    ExtUtils::LibList
    Определяет используемые библиотеки.

    ExtUtils::MakeMaker
    Создает файл проекта Makefile

    ExtUtils::Manifest
    Программы для создания и проверки файла MANIFEST

    ExtUtils::Mkbootstrap
    Применение файла начальной загрузки для DynaLoader.

    Fcntl
    Определения как и в С Fcntl.h

    File::Basename
    Синтаксический разбор спецификации файла.

    File::CheckTree
    Быстрый проход по директориям диска.

    File::Find
    Быстрый поиск файлов по директориям.

    FileHandle
    Обеспечивает объектный метод доступа к указателям файлов.

    File::Path
    Создание/удаление директорий.

    Getopt::Long
    Расширенная обработка опций.

    Getopt::Std
    Стандартная обработка опций.

    I18N::Collate
    Сравнение символов локальной кодировки.

    IPC::Open2
    Межпроцессорный обмен по чтению и записи.

    IPC::Open3
    Межпроцессорный обмен по чтению, записи, и обработки ошибок.

    Net::Ping
    Тест доступа к хосту.

    POSIX
    Стандартный интерфейс по IEEE Std 1003.1

    SelfLoader
    Загрузка функций только по вызову.

    Socket
    Определение структур и констант как и в С socket.h

    Test::Harness
    Стандартный тест с статистикой.

    Text::Abbrev
    Создание таблицы сокращений по списку.

    Подробное описание каждой библиотеки записано в самом файле.

    CPAN

    Программисты всего мира, работающие с Perl, создали общедоступную библиотеку модулей CPAN. Она доступна через Интернет и содержит огромное количество различных по назначению модулей. К ним относятся документаторы, системные интерфейсы, интерфейсы работы с базами данных, работа в сети, с файлами, Интернет-броузеры, системы поиска, огромное количество CGI скриптов для Web серверов и многое-многое другое. Список некоторых CPAN серверов вы можете найти в приложении.


    Инфоком, 2001
    Дизайн: Климентовская Юлия

    io.ua