Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Perl / Спецификация языка Perl /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Операторы языка Perl - Программирование от RIN.RU
Операторы языка Perl



Логическое И и логическое ИЛИ


Бинарное && - логическое И. Если левый аргумент FALSE, то правый не проверяется.


Бинарное || - логическое ИЛИ. Если левый аргумент TRUE, то правый аргумент не проверяется.
|| и && отличаются от подобных операторов в \verbC| тем, что вместо 0 или 1 они возвращают последнюю обработанную величину. Таким образом, наиболее удобным способом определить домашний каталог пользователя из переменной окружения HOME будет (на практике такой способ определения домашнего каталога пользователя не рекомендуется):


$home = $ENV{"HOME"} || $ENV{"LOGDIR"} ||
(getpwuid($<))[7] || die "You"re homeless!\n";


В качестве более удобной для чтения альтернативы Perl поддерживает операторы and и or, которые будут описаны далее. Их приоритет ниже, однако их можно с удобством использовать, не расставляя скобки, после операторов, аргументами которых являются списки:


unlink "alpha", "beta", "gamma"
or gripe(), next LINE;


Если писать в стиле C, то это может быть записано так:


unlink("alpha", "beta", "gamma")
|| (gripe(), next LINE);


Оператор диапазона


.. - оператор диапазона. Реально это два разных оператора, в зависимости от контекста. В списковом контексте он работает как оператор диапазона от левого аргумента до правого.


for (1..10) {
#code
}


В скалярном контексте он возвращает булевское значение. Если левый операнд TRUE, то .. принимает значение TRUE, если правый операнд тоже TRUE.


if (101..200) { print "hi;)";}
- напечатает вторую сотню строк


Условный оператор


?: также как и в C является условным оператором. Он работает подобно if-then-else. Если аргумент перед ? - TRUE, то возвращается аргумент перед :, в противоположном случае возвращается аргумент после :. Скалярный или списковый контекст второго и третьего аргументов передается по наследству.


($a_or_b ? $a : $b) = $c;


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


= - обычный оператор присваивания. Вообще операторы присваивания работают также как и в 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 = )
{
@a = split(/[:]/,$string);
}


Внутри этих скобок стоит дескриптор файла. Считывание происходит построчно. В конце файла принимает значение 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"

<<<  Назад
 1  2 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Cтруктуры данных

Синтаксис языка Perl

Ссылки

Регулярные выражения

Зарезервированные переменные

Встроенные функции

Подпрограммы и модули

Объектная ориентация

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь