Анимация
JavaScript


Главная  Библионтека 

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

Семинар

Контрольные вопросы

1 Чему будет равно значение переменной Sref после выполнения оператора $ref=\"opexh";?

а) ничему, поскольку такой синтаксис недопустим;

б) "орехи";

в) ссылке на анонимный скаляр.

2 Что будет создано в результате объявления такой структуры? $а=[

{name==> "Иванов", kids==> [qwlOeia, Вася, Света) ]}, { nam "Петров", kids==> [qw(Caiia, Маша, Натаиа) ]},

а) хэш, элементы которого являются хэшами, содержащими списки;

б) список хэшей, содержащих список;

в) список списков, содержащие другие списки.

Ответы

1 Правильный ответ - вариант в). Ссылки можно создать на любое значение, а не только на скаляр, массив или хэш. Например, с помощью оператора $ref=\100; создается сс1лка на число. Если вы не уверены в ответе или ответили неправильно, попытайтесь создать короткую программу, выполнить ее под отладчиком и посмотреть, что же получится на самом деле.

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

ключа kids).

Упражнения

Измените игру в лабиринт Maze так, чтобы появилась возможность движения игрока по диагонали. Для этого введите четыре новых кода направления, поскольку программа пе позволяет идептифицировать коды св, сз, юв и юз. Подсказка: решение поставленной задачи состоит в помещении новых кодов направления в массив Smaze, их описания в хэш %full и соответствующих числов1х пар ([1,1], [-1,-1] и т.д.) в хэш direction.

Создайте структуру (можно на листе бумаги), описывающую счет за телефонные переговоры. В структуре (хэше) должны содержаться ключи и соответствующие для них данные (фамилия, адрес, номер телефона), а также список телефонных звонков, сделанных абонентом. В каждом элементе списка (тоже хэша) должна храниться дата и номер телефона.




14-й час

Использование модулей

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

для той области, в которой используется Perl, хотя многие языки прекрасно обходятся

и без них. В Perl предусмотрена возможность запуска внешних программ (с помощью обратных кавычек, каналов и функции systesn), которую мы рассматривали на 11-м занятии, "Взаимодействие с операционной системой". Но опять-таки заметим, что во

многих языках таких возможностей нет вообще.

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

будет неудобно. Например, некоторые разработчики языков считают, что в основу языка

необходимо включить поддержку доступа к World Wide Web. Это, конечно, хорошая идея, но данная функция нужна далеко не каждому. И если через 10 лет Web будет иметь мепь-шее значение, чем сегодня, то придется принять решение удалить эту поддержку, в результате чего множество уже написанных программ попросту перестанет работать.

Разработчики Perl выбрали другой путь. Начиная с Perl 5, сам язык можно расширять путем использования модулей. Модули - это наборы программ на Perl, расширяющие возможности самого языка и область его применения. Например, существуют модули, реализующие возможности Web-броузеров, функции работы с графикой, поддерживающие функции Windows OLE, обеспечивающие возможность работы с базами даннгх и многое другое, что только можно вообразить. Однако следует отметить, что для работы самого интерпретатора Perl дополнительные модули не нужны. Он является полностью функциональным и законченным языком и не нуждается в дополнительных модулях.

С помощью модулей можно получить доступ к большой библиотеке отлаженных подпрограмм, которые будут полезны вам при написании собственных программ. Фактически, оставшаяся часть этой книги будет посвящена написанию CGI-прОфамм

с помощью модулей Perl.



В момент написания этой книги существовало свыше 3500 модулей, причем в стандартную поставку Perl включено не многим более 20 из них. Эти модули можно использовать в своих программах практически для любой цели, причем, по большей части, совершенно бесплатно. Не забывайте, что многие сложные проблемы, которые вам предстоит решить, на самом деле уже кем-то решены. И все, что нужно сделать, - это установить в системе нужный модуль и правильно им воспользоваться.

Основные темы этого занятия.

• Использование модулей в программах на Perl.

• Краткий обзор некоторых встроенных модулей.

• Описание списка основных модулей, входящих в поставку Perl.

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

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

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

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

1. Интерпретатор Perl открывает вашу программу и считывает весь код до тех

пор, пока не найдет оператор use Cwd.

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

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

4 Интерпретатор Perl продолжает чтение и компиляцию программы с того места, где он прервался на обработку директивы use.

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


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

Когда вы включаете в программу Cwd, вам становится доступна новая

функция cwd. Эта функция возвращает имя текущего рабочего каталога.



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