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


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


/p>

Для того чтоб поместить в регулярное выражение любой специальный символ,поставьте реред ним обратный слэш Заставить Perl игнорировать регистр можно поставив i после регулярного выражения

print "Are you sure?:"; $answer=<STDIN>; if($answer=~/Y/i){ #че-нибудь сделаем... }

Полезные функции.

В Perl очень много различных функций ,как говорится на все случаи жизни,все о них я конечно не опишу,но обо многих. Начну с тех,которые больше относятся к операторам. Операция замены s/рег.выражение/строка/ игнорировать регистр - опция i

глобальная(по всей строке) замена -опция g; Пример:

$x="This is test"; $x=~s/ /_/g; print $x; #This_is_test

Очень полезная опция у s/// e -она означает что вторая строка не строка а выражение, результат которого и будет подставлен. Например,у вас есть файл в котором все записи о возрасте через год надо менять

open OLD,"oldfile.txt" || die "Cannot open oldfile.txt $!\n"; open NEW,">newfile.txt" || die "Cannot open newfile.txt $!\n"; foreach(){ s/(\d+)(\s+год)/($1+1).$2/gie; s/(\d+)(\s+лет)/($1+1).$2/gie; print NEW $_; } close NEW; close OLD;

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

sub urldecode{ local($val)=@_; $val=~s/\+/ /g; $val=~s/%([0-9A-H]{2})/pack('C',hex($1))/ge; return $val; }

Также важным удобством в Perl являются операции для работы с файлами для выполнения схожих функций в других языках приходиться проделывать огромную массу работы. Аргументами могут быть как Файловые переменные,так и строки,представляющие имя файла.

Операция Описание Пример использоввания
-r Доступен для чтения unless(-r "myfile"){print "Cannot read myfile\n";}
-w Доступен для записи  
-x Для исполнения  
-o Принадлежит пользователю if(-o "index.htm"){chmod 0777,"index.htm";}
-R Доступен для чтения реальным

пользователем,а не только "эффективным".

Имеет значения для set-uid -скриптов

if(-r FILE){unless(-R FILE){die "Its not allowed to read this\n";}}
-W Доступен для записи реальным пользователем  
-X Доступен для исполнения реальным пользователем  
-O Принадлежит реальному пользователю  
-e Файл или каталог Существует unless(-e $htmlfile){

open HTML,">$htmlfile";

print HTMLFILE "<HTML><BODY></BODY></HTML>";

close HTMLFILE;

}

-z Существует,но имеет нулевую длину if(-z 'tmpfile'){unlink 'tmpfile';}
-s Размер файла в байтах system "rar m -m5 archive.rar $myfile" if -s $myfile > 1000;
-f Файл существует и является простым файлом  
-d Файл существует и является каталогом if(-d 'public_html'){chdir 'public_html';}
-l Символической ссылкой  
-p Каналом FIFO  
-u Имеет бит установки пользователя  
-g Имеет бит установки группы  
-k Установлен sticky-бит  
-t Является терминальным устройством  
-M Время с последнего изменения (в днях) while(defiled($file=glob('*'))){

 if(-M $file >= 7.0){

  unlink($file);#удаляем слишком старые файлы

  }

}

-A Время последнего доступа(в днях) if(-A "$ENV{'HOME'}/public_html/index.html"
-C Время последнего обновления файлового индекса(в днях)  
     
<


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