Анимация
JavaScript
|
Главная Библионтека Чтение документации Все модули Perl сопровождаются собственной документацией. Фактически, если вам доступен модуль, то доступна и документация на него, поскольку она, как правило, находится в самом модуле. Чтобы просмотреть документацию к модулю, воспользуйтесь программой perldoc, указав имя этого модуля. Например, чтобы просмотреть документацию для cwd, в командном приглашении операционной системы просто наберите следующее: perldoc CWd В результате документация будет отображаться в постраничном режиме. Ниже приведен пример (с некоторыми сокращениями). Cw(3 (perl 5.005, patch 02) Cwd(3) NAME getcvd - get pathname of current working directory SYUOPSIS use Cwd; $dir = cwd; use Cwd; $dir = getcwd; use Cwd; $dir = fastgetcwd; DESCRIPTION The getcwdO function re-implements the getcwd(3) (or getwd(3)) functions in Perl. Th ath() function Ukes a single argumennd returns the absolute pathname for that argument. It uses the same algoritta as getcwd(). (actually getcwd() is abs path(".")) Как следует из описания, модуль Cwd на самом деле позволяет использовать три новых функции: cwd, getcwd и fastgetcwd. Если они действительно вам нужны, то не пожалейте времени на ознакомление с документацией к модулю Cwd. Если вас интересует, [сак работает конкретный модуль, ознакомьтесь с его содержимым. В основном модули написаны на Perl и хранятся в системном каталоге интерпретатора. Например, модуль Олс1 хранится в файле с именем cwd.pm. Расположение этого файла может меняться, но обычно он находится в том каталоге, в котором установлен Perl. Путь к каталогу с модулями хранится в переменной §INC. Чтобы вывести ее значение, наберите после приглашения команду perl -v. Поскольку многие модули созданы сторонними программистами, а не разработчиками Perl, и обычно распространяются бесплатно, то и качество документации на них может быть самым разным - от очень хорошего до крайне неудовлетворительного. Однако стоит отметить, что основные модули, входящие в стандартную поставку и упоминаемые в этой книге, а также другие известные модули, такие как Тк и ШР, имеют очень хорошую документацию. Документация к менее популярным модулям обычно является довольно точной и аккуратной, но может оказаться и недостаточно подробной. Если вы не можете разобраться в работе некоторого модуля, обратитесь к материалу 1б-го занятия, "Сообщество Perl", чтобы выяснить, какими ресурсами можно воспользоваться или как связаться с автором модуля, чтобы задать ему интересующий вас вопрос. ! . • Какие могут возникнуть проблемы? ЕСЛИ ваша версия интерпретатора Perl установлена правильно и не имеет внешних повреждений, то никаких проблем возникнуть не должно. Но, к сожалению, реальный мир далеко не идеален, и иногда что-то идет не так, как надо. Если вы получили следующее сообщение об ошибке: syntax error in fil ХХ at line YYY, ne tokens "use Cwd" то следует проверить, какая версия Perl у вас установлена. Попробуйте после приглашения системы следующую команду: perl -V Если указанный Perl номер версии окажется меньше 5 - например, 4,036, - то у вас очень, очень старая версия Perl, и вы должны модернизировать ее. В ней нет многих возможностей версии Perl 5. Кроме того, во всех старых программах не обеспечивается должным образом защита даннтх. Фактически ни один из примеров, приведеннтх на 13-м занятии, "Структуры и ссылки", не будет работать в версии Perl 4. Если вы используете Perl 4, то уже должны были это заметить. Немедленно проведите модернизацию. Вы можете получить также следующее сообщение об ошибке: Cant locate Cwd. pm in iINC 16 INC contains: path., .path., .path.,.) ВВЗШ failed-compilation aborted Обычно это означает одно из трех. • Вы неправильно указали имя модуля (например, сделали в нем орфографическую ошибку). Имена модулей являются зависимыми от регистра, т.е. записи use Cd и use cwd - это не одно и то же. У некотортх имен модулей внутри есть двоеточия (::) - например File: :Find, такие имена нужно тоже правильно набирать. . • Модуль, который вы пытаетесь подключить, не входит в стандартную поставку и не установлен на данном компьютере в соответствующем каталоге. В каждую версию Perl входит примерно 150 модулей - это и есть "стандартная поставка". Некоторые из них будут перечислены ниже на этом занятии. И все они должны работать без проблем. Если нужный вам модуль не входит в стандартную поставку, то вы или ваш системный администратор должны установить его. В, приложении "Инсталляция модулей в Perl" приводится инструкция о том, как установить эти дополнительные модули. • Установка Perl проведена не до конца, либо интерпретатор Жирован с ошибками. К сожалению, время от времени это случается. Интерпретатор Perl ищет установленные модули в тех каталогах, которые перечислены в сообщении об ошибке в переменной § INC. Если модули бьши перемещены, удалены или стали недоступны по какой-то другой причине, то самый простой выход - переустановить Perl. Но прежде чем взять на себя этот труд, нужно убедиться в том, что поврежденный модуль является стандартным. Любые дополнительные модули, которые вы установили самостоятельно, вполне могут оказаться в других катало-х, и это обычная практика. Более подробная информация о том, как устанавливать модули в нестандартных каталогах и как их использовать, содержится в приложении. Краткий обзор А теперь перейдем к краткому рассмотрению некоторых модулей, входящих в стандартную поставку Perl и уже установленных на вашем компьютере. Исследование файлов и каталогов На lQ-м занятии, "Файлы и каталоги", вы узнали, как открывать каталоги и читать списки имен файлов, содержащихся в этих каталогах. Тогда же попутно встал вопрос о чтении подкаталогов, но мы не стали углубляться в него. Теперь настало время узнать, как без особых усилий выполнить рекурсивное чтение каталога и его вложенных подкаталогов. Можно написать простую программу поиска файла, о котором неизвестно точно, в каком каталоге он находится. Например, вам нужно найти файл с именем important.doc, который находится в одном из подкаталогов каталога documents, имеющего следующую структуру: /documents /apoounting -/im -/1999 -/2000 -/misc -/personal На этом рисунке показана структура каталогов, которые находятся в родительском каталоге с именем documents. Найти файл, расположенный в одном из подкаталогов каталога documents, с помощью команд opendir/readdir/closedir непросто. Сначала нужно провести поиск по каталогу documents. Затем нужно продолжить поиск по всем подкаталогам, входящим в documents, accounting, и personal, а потом по всем каталогам, содержащимся в этих каталогах, и т.д. Это старая проблема, которую программисты решают снова и снова на протяжеНИИ последних 30 лет. Писать собственное рещение данной проблемы - значит зря терять время. Как и следовало ожидать, разработчики Perl нашли простое решение, реализованное в модуле File::Find. Чтобы использовать этот модуль в программе, просто поместите в нее (желательно, в начале) следующий код: use File:;Find; В результате вам станет доступна новая функция с именем nd. Ее синтаксис выглядит следующим образом: find subref, dirlist 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 [ 67 ] 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |