Поиск

Немного введения

Чтобы использовать некоторый модуль в программе на Perl, воспользуйтесь директивой use. Например, чтобы включить в программу модуль Cwd, просто поместите в любом месте своего кода следующий оператор:

use Cwd

Как уже было сказано, не имеет значения, в каком месте кода вы вставите конструкцию use Cwd. Но для ясности и простоты использования программы лучше всего поместить этот код в ее начало.

Модуль Cwd мы уже рассматривали на 10-м занятии, "Файлы и каталоги". Но в то время вы еще не знали, как он работает. При запуске программы, в которую включен код use Cwd, на самом деле происходит следующее.

  1. Интерпретатор Perl открывает вашу программу и считывает весь код до тех пор, пока не найдет оператор use Gwi
  2. При установке интерпретатора Perl назначается определенный каталог, в котором должны храниться модули. В этом каталоге Perl и будет проводиться поиск модуля с именем Cwd. Этот модуль представляет собой файл, содержащий программу на языке Perl.
  3. Perl считывает модуль, при этом инициализируются все функции и переменные, необходимые для работы этого модуля.
  4. Интерпретатор Perl продолжает чтение и компиляцию программы с того места, где он прервался на обработку директивы use.

И это все. После того как Perl прочитает всю программу целиком и будет готов запустить ее, все функции, представляемые данным модулем, будут готовы к использованию.

Вы, возможно, заметили, что конструкция use strict во многом напоминает use Cwd. Чтобы вы не запутались, нужно сказать следующее: оператор use — это команда общего назначения, "приказывающая" интерпретатору Perl сделать что-либо. Если говорить о use strict, то этот оператор ужесточает контроль интерпретатора использованием необъявленных и не инициализируемых переменных; модуля с именем strict не существует. А оператор use Cwd используется для включения некоторого модуля в программу. Пусть это отличие не слишком вас беспокоит — оно незначительное и вряд ли серьезно повлияет на вашу работу.

Когда вы включаете в программу onepaтор use Cwd, вам становится доступна новая функция cwd. Эта функция возвращает имя текущего рабочего каталога.

Чтение документации

Все модули Perl сопровождаются собственной документацией. Фактически, если вам доступен модуль, то доступна и документация на него, поскольку она, как правило, находится в самом модуле.

Чтобы просмотреть документацию к модулю, воспользуйтесь программой perldoc, указав имя этого модуля. Например, чтобы просмотреть документацию для cwd, в командном приглашении операционной системы просто наберите следующее:

perldoc Cwd

Как следует из описания, модуль Cwd на самом деле позволяет использовать три новых функции: cwd, getcwd и fastgetcwd. Если они действительно вам нужны, то не пожалейте времени на ознакомление с документацией к модулю Cwd.

Если вас интересует, как работает конкретный модуль, ознакомьтесь с его содержимым. В основном модули написаны на Perl и хранятся в системном каталоге интерпретатора. Например, модуль Cwd хранится в файле с именем Cwd.pm. Расположение этого файла может меняться, но обычно он находится в том каталоге, в котором установлен Perl. Путь к каталогу с модулями хранится в переменной @INC. Чтобы вывести ее значение, наберите после приглашения команду perl -v.

Поскольку многие модули созданы сторонними программистами, а не разработчиками Perl, и обычно распространяются бесплатно, то и качество документации на них может быть самым разным — от очень хорошего до крайне неудовлетворительного. Однако стоит отметить, что основные модули, входящие в стандартную поставку и упоминаемые в этой книге, а также другие известные модули, такие как Тк и LWP, имеют очень хорошую документацию. Документация к менее популярным модулям обычно является довольно точной и аккуратной, но может оказаться и недостаточно подробной. Если вы не можете разобраться в работе некоторого модуля, обратитесь к материалу 16-го занятия, "Сообщество Perl", чтобы выяснить, какими ресурсами можно воспользоваться или как связаться с автором модуля, чтобы задать ему интересующий вас вопрос.

Какие могут возникнуть проблемы?

Если ваша версия интерпретатора Perl установлена правильно и не имеет внешних повреждений, то никаких проблем возникнуть не должно. Но, к сожалению, реальный мир далеко не идеален, и иногда что-то идет не так, как надо.

Если вы получили следующее сообщение об ошибке:

то следует проверить, какая версия Perl у вас установлена. Попробуйте ввести после приглашения системы следующую команду:

perl -v

Если указанный Perl номер версии окажется меньше 5 — например, 4,036, — то у вас очень, очень старая версия Perl, и вы должны модернизировать ее. В ней нет многих возможностей версии Perl 5. Кроме того, во всех старых программах не обеспечивается должным образом защита данных. Фактически ни один из примеров, приведенных на 13-м занятии, "Структуры и ссылки", не будет работать в версии Perl 4. Если вы используете Perl 4, то уже должны были это заметить. Немедленно проведите модернизацию.

Вы можете получить также следующее сообщение об ошибке:

Обычно это означает одно из трех.

  • Вы неправильно указали имя модуля (например, сделали в нем орфографическую ошибку).

    Имена модулей являются зависимыми от регистра, т.е. записи use Cwd и use cwd — это не одно и то же. У некоторых имен модулей внутри есть двоеточия (::) — например File::Find, такие имена нужно тоже правильно набирать.

  • Модуль, который вы пытаетесь подключить, не входит в стандартную поставку и не установлен на данном компьютере в соответствующем каталоге.

    В каждую версию Perl входит примерно 150 модулей — это и есть "стандартная поставка". Некоторые из них будут перечислены ниже на этом занятии. И все они должны работать без проблем. Если нужный вам модуль не входит в стандартную поставку, то вы или ваш системный администратор должны установить его.

    В приложении "Инсталляция модулей в Perl" приводится инструкция о том, как установить эти дополнительные модули.

  • Установка Perl проведена не до конца, либо интерпретатор скомпилирован с ошибками.

    К сожалению, время от времени это случается.

Интерпретатор Perl ищет установленные модули в тех каталогах, которые перечислены в сообщении об ошибке в переменной @INC. Если модули были перемещены, удалены или стали недоступны по какой-то другой причине, то самый простой выход — переустановить Perl. Но прежде чем взять на себя этот труд, нужно убедиться в том, что поврежденный модуль является стандартным. Любые дополнительные модули, которые вы установили самостоятельно, вполне могут оказаться в других каталогах, и это обычная практика. Более подробная информация о том, как устанавливать модули в нестандартных каталогах и как их использовать, содержится в приложении.