Введение в Perl


         

Введение в Perl

Прежде чем приступить к последовательному ознакомлению с не знакомым для вас языком, должен оговориться и сказать, что все примеры да и сам язык описанию которого посвящена эта книга это Perl версии 5.003 для операционной системы FreeBSD версии 2.01. Существуют реализации этого языка для операционных систем OS/2 , MS-DOS и Windows NT но они немного отстают по возможностям от оригинала, рожденного в недрах Unix.

От простого к сложному
#!/usr/local/bin/perl # Содержимое файла test1.pl print "Наше Вам с кисточкой!\n"; А теперь подробно разберем каждую строку. #!/usr/local/bin/perl Данная строка должна быть первой в любой Perl-программе. Она указывает системному интерпретатору что данный файл - это Perl-программа. # Содержимое файла test1.pl Эта строка называется комментарием. Она всегда начинается символом '#' и заканчивается таким объяснением что как говорил великий Ходжа Насреддин "это тонкий философский вопрос", а говоря простым языком здесь можно писать все что угодно. Даже пожелание руководству. Уж здесь оно точно до него не дойдет.

От простого к сложному
Пример 1
Пример 2
Пример 4
Переменные
Пример 1
Пример 4
Контекст
Пример 5
Скалярные значения

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

Select файл select
Select RBITS WBITS EBITS TIMEOUT
Semctl ID SEMNUM CMD ARG
Semget KEY NSEMS FLAGS
Semop KEY OPSTRING
Send SOCKET MSG FLAGS TO send SOCKET MSG
Setpgrp PID PGRP
Setpriority WHICH WHO PRIORITY
Setsockopt SOCKET LEVEL OPTNAME OPTVAL
Shift массив shift

Регулярные выражения Perl и их применение

Если на компьютере у читателя еще не установлена система программирования Perl, то самое время это сделать. Дистрибутив Perl под Windows можно скачать с сайта www.activestate.com. Это все дается бесплатно. Поставка осуществляется в дистрибутиве MSI (MicroSoft Installer). Вы можете запустить его, найдя этот файл через "Мой компьютер" и дважды щелкнув на нем. Также можно использовать инсталлятор msiexec.exe, находящийся в подкаталоге system32 каталога Windows. Если запустить его без параметров, он в окне выдаст справку на русском языке.
Регулярные выражения обычно используются как операнды операторов поиска m/…/ и замены s/…/…/. Слово регулярные означает "составленные по правилам". То, что стоит вместо многоточия в операторе m и вместо первого многоточия в операторе s, - это и есть регулярное выражение. Буква m означает match (соответствие), а буква s означает search (поиск).

Общее знакомство с регулярными выражениями
Предположим, в программе проверяется ввод пользователя, чтобы выяснить, хочет ли он завершить программу, введя слова stop, quit, exit или abort. Без регулярных выражений вам пришлось бы использовать ряд сравнений с этими образцами, предварительно преобразовав ввод к нижнему регистру. С оператором m эта проверка делается просто: if ($input =~ m/stop|quit|exit|abort/i) { exit }

Альтернативные шаблоны
Модификаторы и якоря
Классы символов
Классы символов - 2
Квантификаторы, их "жадность" и ее ограничение
Захватывающие и незахватывающие скобки
Захватывающие и незахватывающие скобки - 2
Захватывающие и незахватывающие скобки - 3
Обратные ссылки
Оператор замены

Текущая позиция поиска
Если с текущей начальной позиции в тексте совпадение не будет обнаружено, то в дело вступает механизм смещения текущей позиции поиска: состояние шаблона и позиция поиска в шаблоне будут сброшены в начальное состояние, а текущая позиция в тексте будет продвинута на один символ. После этого начнется новая итерация поиска совпадения. (Но если шаблон привязан к началу текста якорем \A или ^, то в случае неудачи второй итерации не будет, ведь в этом случае шаблон должен совпасть только в начале текста и нигде больше.)

Возвраты и сохраненные состояния
Механизм работы - Поиск с возвратами
Механизм работы - Поиск с возвратами - 2
Атомарная группировка
Атомарная группировка - 2
Текущая позиция поиска
Возвраты и сохраненные состояния
Возвраты и сохраненные состояния - 2
Возвраты и сохраненные состояния - 3
Возвраты и сохраненные состояния - 4

Комментарии в регулярных выражениях
Регулярные выражения могут быть очень громоздкими и сложными, и разработчики предусмотрели возможность создания в них комментариев, так же, как и в текстах программ. Для этого есть два варианта. В первом, более простом варианте, вы можете использовать специальные скобки (?# комментарий ). Эта конструкция игнорируется. Комментарий не может содержать закрывающую круглую скобку, т.к. по ее наличию определяется, где заканчивается конструкция комментария.

Группировка элементов шаблона
Группировка элементов шаблона - 2
Опережающая проверка
Ретроспективная проверка
Ретроспективная проверка - 2
Встроенный код Perl
Условная конструкция
Условная конструкция - 2
Условная конструкция - 3
Задание модификаторов регулярного выражения

Модификаторы операторов m// и s///
Всего в регулярных выражениях используется восемь модификаторов. i - игнорирует различие между заглавными и строчными буквами. На этот модификатор влияет установка локали.s - метасимвол "точка" совпадает со всеми символами, включая символ новой строки \n.m - разрешает привязку метасимволам ^ и $ к промежуточным символам \n в тексте. В этом случае метасимвол ^ совпадает не только в начале текста, как якорь \A, но и после каждого символа \n, который не стоит в самом конце текста.

Алгоритм работы операторов m// и s///
Оператор m// в режиме однократного поиска
Оператор m// в режиме однократного поиска - 2
Оператор m// в списковом контексте без g
Оператор m// в скалярном контексте с g
m// в списковом контексте с модификатором g
Работа оператор s/// с модификатором g и без него
Предварительная обработка регулярных выражений
Модификаторы операторов m// и s///
Алгоритм работы операторов m// и s///

Поиск отдельных слов
В регулярных выражениях словом называется последовательность символов \w. В множество \w входят все строчные и прописные латинские буквы, десятичные цифры и знак подчерка: [a zA Z0 9_]. К этому множеству относятся все символы, считающиеся буквами в той локальной установке, которая используется. Для ActiveState Perl под Windows для этого достаточно написать директиву use locale; и все русские буквы (включая буквы ё и Ё) в кодировке Windows-1251 также будут считаться буквами.

Поиск нечувствительных к регистру совпадений
Привязка к началу и концу строк и текста
Поиск множественных совпадений
Поиск n-ного совпадения
Замена n-го совпадения
Замена n-го совпадения - 2
Замена n-го совпадения - 3
Применение якорей, проверки текста
Как укоротить длинные URL и длинные слова?
Как укоротить длинные URL и длинные слова? - 2

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

Якорь \G, его смысл и использование
Якорь \G, его смысл и использование - 2
Запрет сброса позиции \G модификатором c
Предварительная настройка начальной позици
Лексический анализ текста с помощью якоря \G
Лексический анализ текста с помощью якоря \G - 2
Предотвращение зацикливания при поиске
Предотвращение зацикливания при поиске - 2
Якорь \G, его смысл и использование
Якорь \G, его смысл и использование - 2

Интерполяция переменных и кода в строку
Интерполяция в строку простого скаляра: "Text $name text". Если нет разделителя после имени переменной, то это имя надо взять в фигурные скобки: "Text ${name}text". Интерполяция в строку переменной с индексами (элемента массива): "Text $name[1] text" или "Text $name[$ind] text". Аналогично происходит интерполяция элемента массива массивов: my @a=([1,2],[3,4]); $_="aaa$a[1][0]aaa"; print $_;

Интерполяция скаляра
Интерполяция массива
Интерполяция вызова подпрограммы
Интерполяция кода Perl
Интерполяция переменных и кода
Экранирование метасимволов выражений
Экранирование метасимволов выражений - 2
Интерполяция переменных и кода в строку
Интерполяция скаляра
Интерполяция массива

Преобразование ftp и http ссылок в теги HTML
Может быть и так, что ссылка не отделена пробелом от окружающих слов или после нее идет знак препинания (точка, запятая и т.д.) Желательно, чтобы регулярное выражение это учитывало и не включало такой знак в ссылку. И конечно, оно не должно совпадать там, где ему совпадать не следует. Неплохо было бы, если бы оно также форматировало текст ссылки href: протокол, домен и субдомены должны быть записаны строчными буквами. А сам текст, который будет виден на странице, должен оставаться таким, каким его ввел участник форума.

Преобразование ftp, http и e-mail ссылок в теги HTML
Пример 1
Пример 1
Пример 2
Пример 2
Пример 3
Пример 3
Пример 4
Пример 4
Преобразование ftp и http ссылок в теги HTML

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

Встроенный код и интеллектуализация поиска
Встроенный код и интеллектуализация поиска - 2
Встроенный код и поиск вложенных конструкций
Встроенный код и поиск вложенных конструкций - 2
Встроенный код и директивы my и local
Встроенный код и директивы my и local - 2
Встроенный код и оптимизация выражений
Встроенный код и интеллектуализация поиска
Встроенный код и интеллектуализация поиска - 2
Встроенный код и поиск вложенных конструкций

Оператор qr/…/
Наряду с операторами q/…/, qq/…/ и qx/…/ в Perl существует оператор qr/…/. Он получает в качестве операнда регулярное выражение, транслирует его и запоминает в переменной, которой присваивается результат. Например: $_='123abcd'; my $re=qr/((\d+)\w+)/; /$re/; print "$1 $2"; Будет напечатано bcd 123

Оператор qr/…/ и интерполяция переменных
Оператор qr/…/ и интерполяция переменных - 2
Оператор qr/…/ и модификаторы
Объекты регулярных выражений и квантификаторы
Ограничители в операторе qr/…/
qr/…/ и проблемы при использовании o
Применение объктов регулярных выражений
Пример 1
Пример 1
Пример 2

Концепция динамической видимости переменных
В языках программирования существуют глобальные и закрытые (private) переменные, которые объявляются директивой my (…). В Perl специальные глобальные переменные, такие, как $_, $1, @ARGV, не объявляются и доступны из любой точки программы. Если вы не используете директиву use strict (или use strict 'vars') и объявляете в программе переменные ($a и т.д.), то эти переменные будут глобальными для данного пакета. Если вы употребили директиву use strict, вы должны будете объявлять эти переменные директивой our.

Концепция динамической видимости переменных
Специальные переменные, изменяемые при поиске
Автоматическая локализация спец переменных
Имитация именованного сохранения
Избавление от "вредных" специальных переменных
Концепция динамической видимости переменных
Специальные переменные, изменяемые при поиске
Автоматическая локализация
Имитация именованного сохранения
Предварительное копирование текста

Примеры применения динамических регулярных выражений
Для начала приведу простой и немного искусственный пример: пусть нам надо проверить правильность строки Далее стоит 13 нулей: 0000000000000 Причем, число нулей может быть произвольным от 1 и более, например, Далее стоит 2 нуля: 00 Нам надо составить регулярное выражение, которое проверяет, что число соответствует количеству нарисованных нуликов.

Примеры применения динамических выражений
Поиск вложенных конструкций
Поиск вложенных конструкций - 2
Примеры применения
Примеры применения - 2
Поиск вложенных конструкций
Поиск вложенных конструкций - 2
Поиск вложенных конструкций - 3

Компиляция и кэширование регулярных выражений
Отыскивается завершающий ограничитель регулярного выражения и читаются модификаторы всего регулярного выражения, которые стоят за этим ограничителем. Наличие модифиатора x учитывается при обработке литерала регулярного выражения.Если регулярное выражение имеет интерполируемые переменные, то вместо них подставляется их значение. При этом учитывается, что последовательности символов $|, $), … не являются переменными и не интерполируются.

Отладочная информация регулярных выражений
Функция study
Хронометраж времени выполнения
Хронометраж времени выполнения - 2
Компиляция и кэширование регулярных выражений
Коэширование регулярных выражений
Отладочная информация регулярных выражений
Функция study
Хронометраж выполнения регулярных выражений
Хронометраж выполнения регулярных выражений - 2

Оператор split
Оператор разбиения split выполняет в каком-то смысле противоположную роль оператору поиска m/// с модификатором g в списковом контексте. Если этот оператор m/// возвращает все фрагменты текста, которые совпали с регулярным выражением, то оператор split возвращает фрагменты текста, которые не совпали с регулярным выражением, заданным ему в качестве аргумента. Оператор split разбивает исходный текст на куски, которые разделяются текстом, совпадающим с заданным регулярным выражением и возвращает эти куски текста в виде массива.

Специальный первый операнд // и ' '
Первый операнд (совпадение)
Второй операнд (целевой текст)
Третий операнд (ограничение)
Возвращение пустых элементов
Отсутствие побочных эффектов у оператора split
Захватывающие скобки оператора split
Функция grep
Оператор split
Специальный первый операнд // и ' '

Эволюция современного мирового хозяйства - перейти
Экономика. Региональная - перейти
Муниципальный менеджмент - перейти
Государственные и муниципальные финансы - перейти
Финансы муниципальных образований - перейти
Региональная экономика - перейти
Основные понятия экономики региона - перейти
Экономика. Теневая - перейти
Выбор элементов - перейти
Rubberband line (резиновая линия) - перейти
Import - перейти
Tolerance - перейти
Самоучитель по OrCAD - перейти
Введение - перейти
Состав системы OrCAD - перейти





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