07 марта 2021 года    
Воскресенье | 22:30    
Главная
 Новости
Базы данных
Безопасность PC
Всё о компьютерах
Графика и дизайн
Интернет-технологии
Мобильные устройства
Операционные системы
Программирование
Программы
Связь
Сети
 Документация
Статьи
Самоучители
 Общение
Форум







Разделы / Интернет-технологии / Perl

Пёрл для чайников. Глава 3

Пёрл для чайников. Глава 3

Занятная всё таки штука - perl... Вот и вас это захватило, и вы продолжаете путь, полный самоистязания и бессонных ночей... Это всё конечно лирика, но и без этого нельзя...


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

Начну немного издалека... Как вы знаете (или должны узнать) в интернете основой передаваемой инфомации является текст. С помоцью текста формируются html страницы, для осуществления интерактивности вы вводите текстовую информацию в соответствующие поля... Задумайтесь над следующим: сколько раз за всё время пользованием интернет вы заполняли различные формы? Выбирали из открывающихся списков интересующие вас темы? Иногда обработку таких данных можно осуществить с помощью JavaScript, но этот способ не всегда является применимым если речь идёт например о гостевой страничке или проверки регистрационных данных, в общем о том, что нельзя сделать на одной странице, без привлечения посторонних ресурсов. Здесь нам на помощь приходит перл, со своими богатыми возможностями по обработке текста (это и является его основной отличительной чертой и одновременно преимуществом).

Итак представим себе некоторую абстратную задачу - принять от пользователя информацию и как-то на неё среагировать. Например мы просим пользователя ввести название своего любимого языка программирования (perl естественно:) и в соответствии с этим вывести ему фразу наподобии: "Молодец! Уважаю!". М-да... опять лирика... Тем не менее давайте рассмотрим как происходит обработка информации в этом случае.

Основной вариант. Программа принимает значение "perl". Отлично. Обнаружить сходство мы сможем используя следующие приемы:

$enter = "perl";
if ($enter eq "perl") { #стандартное сравнение
print "Молодец!";
} else {
print "Позор!";
}

Или вместо второй строки можно написать:

if ($enter =~ /perl/)...

Казалось бы - какая разница? Однако если в первом случае мы используем стандартное сравнение, то во втором примере - поиск по шаблону. В данном случай шаблоном является

/perl/

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

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

if ($enter eq ""perl){
if ($enter eq "Perl"){...}
} else...

Но в шаблоне нам достаточно добавить модификатор i и шаблон будет вылавливать слово perl невзирая на то какими буквами оно записано:

/perl/i

Пользователь может даже ввести "pErL" и программа всё равно найдет слово.
К примеру скажу вам, что подобный трюк например на С++ занял бы не менее десятка строк.

Далее представим себе случай, когда поьзователь мало знакомый с перл ввел pearl (жемчужина) вместо perl:

/pea?rl/i

В данном примере кострукция 'a?' говорит о том что нам подходит случай с буквой 'a' или без неё. А теперь представьте как эти два условия осуществить с помощью стандартного сравнения? Страшно?

Как отдельный пример, не относящийся к нашей программе, рассмотрим замену найденных по шаблону данных. Допустим нам надо заменить в неком файле все слова 'cold' на 'heat' при этом естественно слова такие как 'colder' или 'ashcold' нам земенять ненадо. Замена с помощью регулярных выражений осуществляется в перл следующим методом:

s/old/new/;

То есть мы ищем в тексте 'old' и заменяем его на 'new'. Для нашего примера это будет выглядеть следующим образом:

s/\bcold\b/heat/gi;

Поясняю. В той части, где мы описываем фразу для поиска мы применяем ключ /b, который означает границу (начало или конец) слова. В конце у нас добавлены модификаторы g и i. С модификатором i вы уже знакомы, а g означает, что поиск надо проводить многократно. Т.е. если бы мы не поставили g, то был бы произведен поиск и замена только первого найденного cold, а остальные уже остались бы без изменения.

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

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

NS


Вопросы, пожелания и удары в челюсть по адресу: djns@mail.ru
07.04.2001
 Пёрл для чайников. Глава 3
Лента новостей


2006 (c) Copyright Hardline.ru