Михаил Шохирев - Язык программирования Perl
- Название:Язык программирования Perl
- Автор:
- Жанр:
- Издательство:Интернет-университет информационных технологий - ИНТУИТ.ру
- Год:2006
- Город:M.
- ISBN:5-94774-604-2
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Михаил Шохирев - Язык программирования Perl краткое содержание
Курс знакомит с языком программирования Perl, с его принципами, основными возможностями и особенностями в объёме, достаточном, чтобы начать разрабатывать прикладные и системные задачи, включая программирование для сети Интернет.
Расчитанный на полугодовое изучение, курс является достаточно подробным введением в язык программирования Perl. Описывается уникальная культура Perl и особенности, отличающие его от других языков программирования и во многом обусловившие его популярность. Рассматриваются основные средства программирования на языке Perl версии 5.8. Разбираются богатые возможности языка для создания самых разных приложений, а также особый стиль программирования на Perl. Курс ориентирован на студентов, начинающих программистов или разработчиков, применяющих другие языки и желающих писать прикладные или системные программы на Perl.
Язык программирования Perl - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
$music_files = `dir *.mp3`; # или qx(dir \*.mp3)
Таким же образом можно легко воспользоваться услугами любой другой программы. Недаром Perl часто называют "склеивающим языком" (glue language): с помощью Perl-программы можно обращаться к имеющимся программам, получать результат их выполнения и обрабатывать его по усмотрению программиста. Так, упомянутый в лекции 1прием использования программ-фильтров получил в Perl дальнейшее развитие. Другие примеры использования операции выполнения программы приведены в лекции 16.
Встречается еще один тип строковых литералов, называемых V-строки ("V-strings" - строки версий), хотя он считается устаревшим и может не поддерживаться в будущем.
v1.20.300.4000 # то же, что "\x{1}\x{14}\x{12c}\x{fa0}" v9786 # "смайлик" ? (символ Unicode \x{263A}) v79.107.33 # строка 'Ok!' 79.107.33 # в литерале с несколькими точками можно без "v"
V-строки полезны для сравнения "номеров" версий с помощью операций строкового сравнения, например:
$version = v5.8.7; print "Версия подходит\n" if $version ge v5.8.0;
V-строки иногда также применяются для записи сетевых адресов IPv4, например: v127.0.0.1.
Кроме escape-последовательностей, описанных в лекции 2, в Perl есть особые управляющие последовательности, предназначенные для преобразования символов в строковом литерале. Они приведены в таблице 7.1. С их помощью преобразуется либо один символ, следующий за escape-последовательностью, либо несколько символов до отменяющей последовательности.
Таблица 7.1. Преобразующие escape-последовательностиУправляющая последовательность | Мнемоника символа | Преобразование |
---|---|---|
\u | Upper case | преобразовать следующий символ к верхнему регистру |
\l | Lower case | преобразовать следующий символ к нижнему регистру |
\U | Upper case | преобразовать символы до \E к верхнему регистру |
\L | Lower case | преобразовать символы до \E к нижнему регистру |
\Q | Quote | отменить специальное значение символов вплоть до \E |
\E | End | завершить действие \U или \L или \Q |
Применение этих преобразующих escape-последовательностей можно проиллюстрировать такими примерами:
use locale; # для правильной обработки кириллицы $name = 'мария'; # будем преобразовывать значение переменной print "\u$name"; # будет выведено: Мария print "\U$name\E"; # будет выведено: МАРИЯ print "\Q$name\E"; # будет выведено: \м\а\р\и\я
Аналогичного результата можно достигнуть при использовании некоторых строковых функций, о которых пойдет речь далее в этой лекции.
Еще одним видом непосредственной записи в программе текстовой информации являются так называемые встроенные документы (here-documents). Эта конструкция, заимствованная из командного языка Unix, представляет из себя встроенный в программу произвольный текст. Встроенный документ начинается символами <<, за которыми без пробелов указывается ограничитель, отмечающий конец документа. Все строки, начиная со следующей, рассматриваются как содержимое этого документа до тех пор, пока не встретится строка, состоящая только из указанного ограничителя. Обозначающий конец встроенного документа ограничитель должен записываться на отдельной строке с самого ее начала.
$here_document = <
Если желательно записывать ограничитель с пробелами, то его нужно заключить в кавычки, а если он записан кириллицей, то нужно прагмой use locale включить учет национальных установок:
use locale; $here_document = <<'КОНЕЦ ДОКУМЕНТА'; ЭТО НЕ КОНЕЦ ДОКУМЕНТА КОНЕЦ ДОКУМЕНТА
Во встроенных документах производится интерполяция переменных, если только ограничитель here-документа не заключен в одинарные апострофы. Поэтому встроенные документы часто применяются для комбинирования предварительно отформатированного текста со значениями переменных, как это сделано в следующем примере:
$here_document = <<"END_OF_DOCUMENT"; # присваивание строке Уважаемый $guests[$n]! Приглашаем Вас на презентацию книги "$title", которая состоится $date в $time. Оргкомитет. END_OF_DOCUMENT print $here_document, '-' x 65, "\n";
Например, с помощью here-документа легко и удобно программно создать HTML-страницу, вставляя в нее нужную информацию:
$web_page = <
$header
$article{$number}
Вернуться к разделу $topic
Copyright © $year, $author.
HTML
Это один из способов динамического создания на web-сервере гипертекстовых страниц в ответ на запрос информации, например, хранимой в базе данных.
В предыдущих лекциях уже упоминались функции, обрабатывающие символьную информацию:
[x]. chomp() , удаляющая в конце строки символ-разделитель записей;
[x]. chop() , отсекающая любой последний символ строки;
[x]. join() , объединяющая элементы массива в одну строку;
[x]. split() , разделяющая строку на список подстрок.
В этой лекции мы познакомимся с другими встроенными функциями для работы с текстом. Хотя в приведенных далее примерах аргументы функций заключены в круглые скобки, использование скобок при вызове встроенных функций необязательно, если не возникает неоднозначности определения аргументов функции.
Часто требуется выяснить, содержит ли строка ту или иную подстроку. Функция index() выполняет поиск подстроки в строке, начиная с определенного смещения, и возвращает номер позиции найденной подстроки. Функция rindex() ищет подстроку от конца строки и возвращает позицию последней подстроки в строке перед указанным смещением. Смещение можно не указывать, тогда поиск производится во всей строке. Номера позиций подстроки и смещения начинаются с нуля. Если подстрока не найдена, возвращается -1. Например:
$pos = index($string, $sub_string, $offset); # с начала $last_pos = rindex($string, $sub_string, $offset); # с конца print "есть правда!" if(index($life, 'правда') != -1);
В следующей главе будет рассказано о регулярных выражениях, с помощью которых можно гибко управлять поиском подстроки, задавая шаблоны приблизительного соответствия и расположение подстрок относительно друг друга.
Определение длины текста - также весьма распространенная операция. Функция length() возвращает длину в символах значения строки или выражения, возвращающего строку или преобразованного к строке:
$string_length = length($string); # строка в переменной $n *= 2 until(length($n)>10); # длина числа print 'Текст слишком длинный' if length($s1 . $s2) > $limit;
Функция substr() , выполняющая выделение подстроки из строки, всегда была очень популярной в большинстве языков (кроме Perl, в котором это действие чаще выполняется с помощью регулярных выражений). Она копирует из строки подстроку заданной длины, начиная с указанного смещения. Если смещение отрицательное, то оно отсчитывается от конца строки. Если длина подстроки не задана, то копируется строка после смещения до самого конца:
Читать дальшеИнтервал:
Закладка: