Начинающим Web - разработчикам сайтов

Категории
Полезные сайты
Операторы
Основные понятия
Синтаксис языка Perl
Переменные
Встроенные переменные
Шаблоны
      Операторы ( 1 стр. )
Операторы ( 2 стр. )
Встроенные функции - 1
Встроенные функции -2
Подпрограммы и др.

Операторы ( 2стр )

Операторы ввода-вывода

К таким операторам относятся скобки ` ` и команда < > . Начнем с первого. Результатом работы такого оператора является обработка строки, заключенной в скобках ` ` (`_строка`), как системном командой и вывод "псевдо" литерала. Если сравнивать по контексту самой строки, то в скалярном - это полный результат в одну строку и в списковом - список, состоящий из результатов строк этого списка. По умолчанию считывание происходит в переменную $?.

Вторая команда выглядит так < _файл > , где можно сразу догадаться, что она предназначена для чтения из файла. Следует особо подчеркнуть, здесь "_файл" - не имя файла, а лишь его указатель, созданный функцией open() . Пример:

open(STDIN,"/etc/passwd");
while ($string = <STDIN>)
{
@a = split(/[:]/,$string);
}

где STDIN - стандартный ввод (указатель файла по умолчанию)

В скалярном контексте считывание происходит в виде одной строки, независимо от указания перевода строки ( \n ). В строковом - файл целиком, как список, где элементом является содержание строки файла. Возращение false по окончания считывания файла означает то, что результат оператора "<>" не определен. При не указании в строке данного оператора никаких аргументов, то будет восприниматься как стандартный ввод. Иными словами " < > " эквивалентен <STDIN> . По умолчанию считывание происходит в переменную $_.

При указании в данном операторе переменной, то контекст последней будет являться ссылкой на указатель файла или непосредственно самим именем указателя файла. В случае отсутсвия указателя, контекст переменной становится шаблоном имен файлов, т.е. получим все имена файлов на диске, отобранные по этому шаблону.

Нулевой дескриптор файла обработается также как в sed и awk , то есть считывается список из файлов перечисленных в командной строке.

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

Оператор s/PATTERN/REPLACEMENT/egimosx производит поиск строки по шаблону и случае успеха происходит ее замена, где:

  • PATTERN - шаблон, и если строка по нему будет найдена, то производится подстановка на ее место текста REPLACEMENT . Возвращает количество произведенных подстановок.
  • REPLACEMENT - подстрока, которая замещает строку, найденную по шаблону
  • e - обрабатывать правую часть как выражение
  • g - глобальный поиск по соответствующему шаблону
  • i - производит поиск не различающий регистр (большие и маленькие) букв.
  • m - интерпретирует строку, как многострочную переменную
  • o - происходит подстановку только один раз и на место первой строки, найденной по шаблону.
  • s - интерпретирует строку, как однострочную переменную
  • x - применение расширенных регулярных выражений

Примечание : Если перед этим оператором не использовался оператор =~ или !~ для определения переменной, которая будет обрабатываться, то тогда используется переменная $_ В качестве разделителя можно использовать любой (кроме пробела) символ, а не только "/". При использовании разделителя начальный символ "s" можно не писать.

Теперь давайте приведем пример замены строк с использованием переменной $_ так, как применяется оператор " =~":

$path =~ s|/usr/local/bin|/usr/bin|;
($foo = $bar) =~ s/this/that/o;
$count = ($paragraf =~ s/Mister\b/Mr./gm);

Аналогично работат оператор замены строк m/PATERN/gimosx/PATERN/gimosx.

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

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

tr[A-Z][a-z]
tr(+-*/) /ABCD/

Символы cds , как и в случае с предшествующими операторами, являются опциями:

  • c - дополняет SEARCHLIST из найденных REPLACEMENTLIST
  • d - стиратель найденных, но не востребованных символов
  • s - служит для сокращения повторяющихся символов в одной строке с один символ.

Подводя итог по изучению операторов языка Perl можно закрепить эти знания таблицей, в которой операторы выстроены также с учетом приоритета и еще добавлена ассоциативность (расположение оператора, относительно переменной).

Ассоциативность

Операторы

левая термы и левосторонние списковые операторы
левая ->
- ++ и --
правая ** (две звездочки)
правая !~\ унарны + и -
левая =~ и !~
левая * (звёздочка), /,% , x
левая + и -
левая << >>
- именованные унарные операторы
- <, >, <=, >=, lt, gt, le, ge
- ==, !=, <=>, eg, ne, cmp
левая &
левая I, ^
левая &&
левая II
- ..
правая ?:
правая =, +=, -=, *=
левая , (запятая) и =>
- правосторонние списковые операторы
левая not (логическое НЕ)
левая and (логическое И)
левая or, xor (ИЛИ и исключающее ИЛИ)
Начинающим Web - разработчикам сайтов
Rambler's Top100 Рейтинг@Mail.ru
Hosted by uCoz