Создание серверных приложений на языке PERL


Прекрасный язык Perl - часть 3


if(условие)оператор; оператор if условие;

В пару к оператору if имеется оператор unless : означающий if

с отрицанием:

unless(($method eq 'GET')||($method eq 'POST')){print "Unsupported method";} print "Ok" unless $x < $y;

Также в пару while существует until

синтаксис оператора for

полностью аналогичен C:

for($i=0;$i

новшеством(и приятным) является foreach позволяющий пройтись по всем элементам массива,присваивая по очереди его элементы какой-то переменной, его синтаксис такой:

foreach $переменная (@массив){ блок операторов; } или foreach (@массив){ операторы; }

Последний пример особенно важен для упрощения вашего тяжкого труда програмиста и демонтстрирует интересную особенность Perl-переменную по умолчанию $_: в оргомном количестве операторов и функций при опускании аргумента она подразумевается по умолчанию. Она также по умолчанию сопоставляется с регулярным выражением:

следующий пример @Data=<STDIN>; foreach(@Data){ chomp; print if /^From:/; } аналогичен такому: @Data=<STDIN>; foreach $_ (@Data){ chomp($_); print $_ if $_ =~ /^From:/;

как видите затраты труда значительно сокращаются,благодаря этому маленькому трюку. Регулярные выражения.

регулярное выражение записывается между двух слэшей /рег_выр/

if(/abc/){ print '$_ содержит abc\n'; }

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

Символ Значение Пример применения
. Соответствует любому символу print if /ab.c/;
[мн-во симв] Соответствует любому символу из данного мн-ва /[abc]d/;#соответствует ad,bd,cd
[^мн-во] Отрицание мн-ва символов /[^xyz]/;#
(....) Группировка элементов(и также запоминание в переменных $1 $2 $3 ...) /(xyz)*/

/([abc].[^xy]qwerty)/

(..|..|..) Одна из альтернатив  
* повторение образца 0 или более раз /.*/;#соответствует всему
? Повторение 0 или 1 раз /(http:\/\/)?.*\.cgi/
+ Повторение 1 или более раз  
{n,m} повторение от n до m раз  
{n} повторение точно n раз  
{n,} повторение n и более раз  
Спец символы:    
\t \r \n ... Управляющие символы:табуляции,возврат каретки,перевод строки.....  
\d Соответствует цифре,Аналог [0-9]  
\D Соответствует нецифровому симсволу,аналог[^0-9]  
\w Соответствует букве  
\W Соответствует небуквеному символу  
\s Соответствует пробельным символам(пробелы,табуляции,новые строки..)  
\S Соответствует непробельному символу  
\b Соответствует границе слова $test1="this is test";

$test2="wise";

if($test1=~/\bis\b/){print "1";}#соответствует

if($test2=~/\bis\b/){print "2";}#нет

\B Соответствует не границе слова /\Bis\B/ соответсвует 'wise' но не 'is'
<


Начало  Назад  Вперед



Книжный магазин