Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_ekzamen.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
2.49 Mб
Скачать

76.Язык Perl. Операторы присваивания. Оператор ``запятая''. Логическое не. Логическое и, или и Исключающее или. Оператор чтения из файла. Оператор замены строки. Оператор замены множества символов.

Операторы присваивания

= - обычный оператор присваивания. Вообще операторы присваивания работают также как и в C. $a += 2; - то же самое, что и $a = $a + 2; Можно использовать следующие сокращения:

**= += *= &= <<= &&=

-= /= |= >>= ||=

.= %= ^= x=

($a += 2) *= 3; - то же самое, что и : $a = $a + 2; $a = $a * 3;

Оператор ``запятая''

, - оператор запятая или comma-оператор. В скалярном контексте он обрабатывает левый аргумент и отбрасывает его значение, потом обрабатывает правый аргумент и возвращает его величину. В этом он подобен comma-оператору из C. В списковом контексте он играет роль разделителя аргументов и вставляет оба аргумента в список. => является синонимом comma-оператора.

Логическое НЕ

Унарное NOT возвращает отрицание аргумента. Оно эквивалентно !, за исключением более низкого приоритета.

Логическое И, ИЛИ и Исключающее ИЛИ

and возвращает конъюнкцию двух выражений. Он эквивалентен &&, за исключением более низкого приоритета. or возвращает дизъюнкцию аргументов. Он эквивалентен ||, за исключением более низкого приоритета. xor (eXclusive OR) - исключающее ИЛИ, возвращает истину, если истинен ровно один из аргументов.

Оператор чтения из файла

В Perl есть несколько операций ввода-вывода. Для вывода из файла используется команда <>.

open(STDIN,"/etc/passwd");

while ($string = <STDIN>)

{

@a = split(/[:]/,$string);

}

Внутри этих скобок стоит дескриптор файла. Считывание происходит построчно. В конце файла <STDIN> принимает значение FALSE и цикл while завершается. По умолчанию считывание происходит в переменную $_. Нулевой дескриптор файла используется также как в sed и awk, то есть считывается поток из файлов перечисленных в командной строке.

Оператор замены строки

Оператор s/PATTERN/REPLACEMENT/egimosx производит поиск строки, соответствующей шаблону PATTERN и если строка найдена, то подстановку на ее место текста REPLACEMENT. Возвращает количество произведенных подстановок. Если перед этим не использовался оператор =~ или !~ для определения переменной, которая будет обрабатываться, то будет модифицироваться переменная $_. Этот оператор используется со следующими опциями:

e интерпретирует правую часть как выражение.

g производит подстановку на место каждой строки, соответствующей шаблону.

i производит поиск различающий большие и маленькие буквы.

m обрабатывает строку, как состоящую из нескольких строк.

o происходит подстановка только на место первой встреченной строки.

s обрабатывает строку, как состоящую только из одной строки.

x использует расширенные регулярные выражения.

Например:

$path =~ s|/usr/local/bin|/usr/bin|;

($foo = $bar) =~ s/this/that/o;

$count = ($paragraf =~ s/Mister\b/Mr./gm);

Оператор замены множества символов

tr/SEARCHLIST/REPLACEMENTLIST/cds y/SEARCHLIST/REPLACEMENTLIST/cds Заменяет все найденные символы из множества символов SEARCHLIST на соответствующие символы из множества символов REPLACEMENTLIST. Возвращает число символов, которые были заменены или удалены. Если посредством операторов =~, !~ не была указана никакая строка, то обрабатывается переменная $_. y является синонимом tr. Если SEARCHLIST заключен в скобки, то REPLACEMENTLIST тоже заключается в скобки, которые могут отличаться от тех, в которые заключается шаблон, например:

tr[A-Z][a-z]

tr(+-*/)/ABCD/

Этот оператор употребляется со следующими опциями:

c заменяет символы, которые не входят во множество SEARCHLIST на REPLACEMENTLIST, например:

tr/a-zA-Z/ /cs;

заменит неалфавитные символы.

d Стирает символы, которые ни на что не заменяются.

s Переводит последовательность символов, которые заменяются на один и тот же символ в один символ.

Например:

$a = 'CCCCCCCCC';

$a =~ tr/C/D/s;

теперь $a = 'D'

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]