На главную

Библиотека Интернет Индустрии I2R.ru

Rambler's Top100

Малобюджетные сайты...

Продвижение веб-сайта...

Контент и авторское право...

Забобрить эту страницу! Забобрить! Блог Библиотека Сайтостроительства на toodoo
  Поиск:   
Рассылки для занятых...»
I2R » И2Р Программы » Программирование » PHP

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, а остальные уже остались бы без изменения.

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

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

Дмитрий Червинский
http://perlbook.nm.ru/

Другие разделы
C, C++
Java
PHP
VBasic, VBS
Delphi и Pascal
Новое в разделе
Базы данных
Общие вопросы
Теория программирования и алгоритмы
JavaScript и DHTML
Perl
Python
Active Server Pages
Программирование под Windows
I2R-Журналы
I2R Business
I2R Web Creation
I2R Computer
рассылки библиотеки +
И2Р Программы
Всё о Windows
Программирование
Софт
Мир Linux
Галерея Попова
Каталог I2R
Партнеры
Amicus Studio
NunDesign
Горящие путевки, идеи путешествийMegaTIS.Ru

2000-2008 г.   
Все авторские права соблюдены.
Rambler's Top100