Анимация
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

Второй способ - использование елел. Указатели позволяют создавать хэши массивов, хэши хэшей и другие сложные структуры данных. Если вы разберетесь с указателями, вам не составит особого труда создать сложные структуры. Эта тема подробно рассматривается на 13-м занятии, "Структуры и ссылки".

Как можно сохранить ключи в том порядке, в котором они бгли введены?

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

Гораздо лучший способ - использовать модуль Tie: :IxHash, который заставляет функцию keys ключи в порядке ввода их элементов, что вам было и нужно. Подробнее об использовании модулей речь пойдет на 14-м занятии, "Использование модулей".

Существует ли удобный способ записи хэша в файл?

Конечно. Модули Data:: Dumper и Storable могут преобразовать типы данных в скалярные значения, которые можно легко сохранить в текстовом файле. В этих модулях есть

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

На 15-м занятии, "Обработка данных в Perl" будет рассмотрен еще более простой способ записи хэша в файл с использованием DBM-файлов. DBM-файлы позволяют связать хэш с файлом на диске. При изменении хэша будет изменяться и содержимое файла. Таким образом, с помощью файлов на диске можно организовать длительное хранение содержимого хэша.

Семинар

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

1. Почему в программе Customer нельзя в качестве ключей хэшей использовать имена людей?

а) в элемент хэш Perl невозможно одновременно поместить и имя, и фамилию клиента;

б) имена людей не могут быть уникальными ключами;

в) имена не используются для поиска в базе данных.

2. Какое различие существует между ассоциативным массивом и хэшем?

а) нет никакого различия;

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

в) хэши в Perl - это не совсем ассоциативные массивы, поэтому и термин другой.

3. Какой вид данных больше подходит для хэшей?

а) простой список элементов;

б) массив;

в) список пар ключ-значение.

122 Часть I. HOEi Perl



Ответы

1. Правильный ответ - вариант б). Размер хэша Perl не ограничен, а клиенты часто просят найти их запись по имени. Однако имена людей не подходят, потому что они не уникальны. В телефонных книгах очень много одинаковых имен, таких как John Smith или Robert Jones. "

2. Правильный ответ - вариант а). Хэши и ассоциативные массивы - одно и то же. Единственная разница между ними - тот факт, что слово хэш короче.

3. Правильный ответ в), хотя для инициализации хэши можно использовать и

массив, преобразованный в список.

Упражнения

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

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



8-й час Функции

Почти все языки программирования содержат функции. Функция - это фрагмент

кода, вызываемый по имени и возвращающий некоторое значение. В этой книге вы

уже встречались с функциями print, reverse, sort, open, close, split и др. Но то б1ли

встроенные функции Perl.

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

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

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

• Определение собственной функции и ее вызов.

• Передача значений в функции и получение возвращаемых ими значений.

• Использование директивы use strict для ужесточения контроля за кодом.

Создание и вызов подпрограмм

Для создания пользовательских подпрограмм в используется следующий синтаксис:

sab гня подарограш1ы { оператор!;

оператор ;

>

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

124 Часть I. ОcноEl Perl



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