Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

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

div.main {margin-left: 20pt; margin-right: 20pt}Пёрл для чайников. Глава 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/bcoldb/heat/gi;

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

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

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

NS

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

  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте