Учебное пособие по CGI-программированию - Полезные функции
ОГЛАВЛЕНИЕ
Полезные функции.
В Perl очень много различных функций ,как говорится на все случаи жизни,все о них я конечно не опишу,но обо многих. Начну с тех,которые больше относятся к операторам. Операция замены s/рег.выражение/строка/ игнорировать регистр - опция i глобальная(по всей строке) замена -опция g; Пример: $x="This is test";
Очень полезная опция у s/// e -она означает что вторая строка не строка а выражение, результат которого и будет подставлен. Например,у вас есть файл в котором все записи о возрасте через год надо менять
$x=~s/ /_/g;
print $x; #This_is_test open OLD,"oldfile.txt" || die "Cannot open oldfile.txt $!\n";
или более показательным примером послужит функция urldecode,которая будет встречатся в каждой вашей программе,обрабатывающей формы:
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;sub urldecode{ Также важным удобством в Perl являются операции для работы с файлами для выполнения схожих функций в других языках приходиться проделывать огромную массу работы. Аргументами могут быть как Файловые переменные,так и строки,представляющие имя файла.
local($val)=@_;
$val=~s/\+/ /g;
$val=~s/%([0-9A-H]{2})/pack('C',hex($1))/ge;
return $val;
}
| Операция | Описание | Пример использоввания |
| -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" < -A "$ENV{'HOME'}/.last"){print "Кто-то ходил на твою домашнюю страничку пока тебя не было!!!\n";} |
| -C | Время последнего обновления файлового индекса(в днях) | |
