Михаил Шохирев - Язык программирования Perl

Тут можно читать онлайн Михаил Шохирев - Язык программирования Perl - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая околокомпьтерная литература, издательство Интернет-университет информационных технологий - ИНТУИТ.ру, год 2006. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Михаил Шохирев - Язык программирования Perl краткое содержание

Язык программирования Perl - описание и краткое содержание, автор Михаил Шохирев, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

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

Язык программирования Perl - читать онлайн бесплатно полную версию (весь текст целиком)

Язык программирования Perl - читать книгу онлайн бесплатно, автор Михаил Шохирев
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

%dictionary = ('я' => 'I', 'он' => 'he', 'она' => 'she'); %dictionary = ('я', 'I', 'он', 'he', 'она', 'she');

И конечно, для заполнения хэша элементами вместо списочного литерала можно использовать массив, содержащий пары "ключ - значение":

%dictionary = @list_of_key_value_pairs; # массив пар

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

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

@key_value_list = %hash; # список ключей и значений

При этом в список будут помещены все ассоциативные пары из хэша, и ключи станут нечетными элементами списка, а значения - четными. Порядок копирования в массив ассоциативных пар заранее не известен.

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

$hash{$key} = $value; # добавление значения в хэш по ключу $value = $hash{$key}; # извлечение значения из хэша по ключу

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

$month = 'January'; $days_in_month{$month}= 31; # со строкой связано число $ru{$month}= 'январе'; # со строкой связана строка print "В $ru{$month} $days_in_month{'January'} день";

В некоторых программах можно встретить при записи элементов хэша строковые ключи, не заключенные в кавычки: это допускается, если ключ - одно слово, записанное по правилам написания идентификаторов, так называемое "голое слово" ("bare word").

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

$variable # скалярная переменная @variable # переменная-массив %variable # переменная-хэш

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

while (my $line = <>) { # считать строку из входного потока chomp($line); # удалить из строки символ '\n' @words = split(' ', $line); # разбить строку на слова foreach my $word (@words) { # для каждого найденного слова $hash{$word}++; # увеличить счетчик } } # теперь в %hash содержатся счетчики слов

Позднее, в лекции, посвященной регулярным выражениям, будет сказано, как выделять из строки слова не только по пробелам.

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

При обработке данных в хэше часто возникает необходимость проверить наличие в нем элемента с определенным ключом. Функция exists проверяет, содержится ли указанный ключ в хэше. Если ключ найден, она возвращает истинное значение ('1'), - и ложное значение (пустую строку), если такого ключа в хэше нет. При этом ассоциированное с ключом значение не проверяется и может быть любым, в том числе и неопределенным. Так можно проверить наличие ключа в хэше:

print "ключ $key найден" if exists $hash{$key};

При помощи функции defined() , возвращающей истинное или ложное значение, можно проверить, было ли задано значение в элементе хэша, ассоциированное с указанным ключом, или оно осталось неопределенным. Например:

print "с ключом $key связано значение" if defined $hash{$key};

Проверка с помощью функции defined($hash{$key}) отличается от проверки значения элемента на истинность значения $hash{$key} , так как значение элемента может быть определено, но равно нулю или пустой строке, что тоже воспринимается как ложь.

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

undef $hash{$key }; # сделать значение неопределенным

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

$hash{$key} # неопределенное значение - это ложь defined $hash{$key} # ложь, ибо значение не определено exists $hash{$key} # истина, ибо ключ есть

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

Добавление элементов в хэш выполняется операцией присваивания, а удаление - функцией delete . Эта функция по указанному элементу удаляет из хэша соответствующую пару "ключ - значение" и возвращает только что удаленное значение. Это делается так:

$deleted_value = delete $hash{$key}; # удалить элемент

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

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

@hash_keys = keys %hash; # поместить список ключей в массив

Возможно также использовать список ключей для доступа в цикле ко всем значениям хэша. Так можно напечатать частотный словарь из предыдущего примера:

foreach my $word (keys %hash) { # для каждого ключа хэша print "$word встретилось $hash{$word} раз\n"; }

Элементы хэша, как и другие скалярные величины, помещенные в обрамленную двойными кавычками строку, заменяются своими значениями. Кстати, можно переписать последний пример, добавив сортировку ключей для вывода слов в алфавитном порядке. А для организации цикла можно применить модификатор foreach , совмещающий очередной элемент списка с переменной по умолчанию $_ :

print "$_ встретилось $hash{$_} раз\n" foreach (sort keys %hash);

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Михаил Шохирев читать все книги автора по порядку

Михаил Шохирев - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык программирования Perl отзывы


Отзывы читателей о книге Язык программирования Perl, автор: Михаил Шохирев. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x