Умовний оператор '?:' Цей оператор працює так само як і в С. Якщо вираз перед '?' істина, то виконується аргумент перед ':' - інакше після ':'.

$i = 1;

$i > 1 ? print "більше" : print "менше"; #Результат: менше

Оператори привласнення. '=' - звичайний оператор "привласнити" праве значення змінної зліва. Вся ця група операторів подібна до операторів З, тобто

$i += 2; #эквивалентно $i = $i + 2;

Останні оператори цієї групи працюють аналогічно. Допустимі наступні оператори:

**=, +=, -=, .=, *=, /=, %=, x= &=, |=, ^=, <<=, >>= &&=, ||=

Пріоритет всієї цієї групи операторів дорівнює пріоритету '='.

Оператор '', (кома)В скалярному контексті виконується лівий аргумент, результат ігнорується, потім правий, і його результат є результат дії оператора. У списковому контексті це роздільник елементів списку, включає вказані елементи в список.

Оператори not, and, or, xorОператор логічне not (заперечення). - унарний not повертає протилежне значення, отримане виразм справа. Він еквівалентний '!'.

Оператор логічне and (І). Виконує логічну кон'юнкцію двох виразів. Еквівалентний '&&', але має дуже низький пріоритет і "стислість" дії, тобто якщо лівий вираз рівне false - праве не виконується.

Логічне or (АБО). Виконує логічну диз'юнкцію двох виразів. Еквівалентний '||', але має дуже низький пріоритет і "стислість" дії, тобто якщо ліве вираз рівне true - ліве не виконується.

Логічне xor (що виключає АБО).Виконує логічне що виключають або. Завжди виконуються обоє праве і ліве вираз.

У Perl відсутні оператори мови З, такі як:

унарне & - отримати адресу. Для цього застосовується '\'.
унарний * - переадресація.
(TYPE) - поєднання типів.

Оператори обмежувачі рядків.Зазвичай обмежувачами рядків ми вважаємо літерали, але в Perl це оператори, що виконують різного роду інтерполяцію і пошук за шаблоном. Ви можете самі задавати зручні для вас обмежувачі. У наступній таблиці приведений повний перелік варіантів. Фігурні дужки '{}' позначають будь-який символ, використовуваний для обмежувача. В разі використання дужок (круглих '( )', квадратних '[ ]', фігурних '{ }', кутових '< >') на початку ставиться дужка, що відкривається, а що в кінці закриває.

За замовчуванням Повне Функція Інтерполяція
'' q{} Literal немає
"" qq{} Літерал так
`` qx{} Команда так
  qw{} Список слів немає
// m{} Шаблон так
  s{}{} Підстановка так
  tr{}{} Трансляція немає

У рядках, що допускають інтерполяцію, імена змінних, що починаються з символів '$' або '@', - інтерполюються, тобто в рядок вставляється значення рядка або масиву. Дані послідовності символів мають спеціальне значення:

\t символ табуляції
\n символ нового рядка
\r повернення
\f переклад формату
\v вертикальна табуляція
\b backspace (забій)
дзвінок
\e escape
\034 вісімковий символ
\x1a шістнадцятиричний символ
\c[ символ управління
\l нижній регістр наступного символу
\u верхній регістр наступного символу
\L нижній регістр для всіх символів до \E
\U верхній регістр для всіх символів до \E
\E обмежувач зміни регістра
\Q відміна дії метасимволів до \E

Шаблони інтерполюються як регулярні вирази. Це виконується другим проходом після інтерполяції змінних, тому в шаблони можна вставляти змінні. Для відміни інтерполяції використовуйте '\Q'. Якщо ви застосовуєте вкладені обмежувачі, то внутрішні обмежувачі працювати не будуть.

?PATERN?Дія цього оператора аналогічна /шаблон/, але виконується до першого збігу. Це зручно для пошуку наявності якого-небудь рядка в одному або безлічі файлів. Це не дуже вдалий оператор.

m/PATERN/gimosx, /PATERN/gimosxПошук в рядку по патерну (шаблону). У скалярному контексті повертає логічне значення true (1) або false (''). Якщо рядок не вказаний за допомогою операторів '=~' або '!~', пошук ведеться в рядку $_. Опції:

g - Глобальний пошук. Пошук всіх входжень.
i - Порівняння не залежить від регістра (верхній або нижний)
m - Рядок багаторядковий.
о - однопрохідна компіляція
s - однорядковий рядок
x - використовуються розширені регулярні вирази.

Якщо '/' - обмежувач, то початкове 'm' можна опустити. За допомогою його як обмежувач може бути будь-який символ окрім пропуску.

PATTERN може містити змінні, які інтерполюватимуться (перекомпілюватися) кожного разу у момент обчислення. Змінні $) і $| не інтерполюються. Якщо ви хочете, що б такий шаблон інтерполювався один раз - додайте /o. Це необхідно робити в циклах пошуку для збільшення швидкодії. Якщо PATERN - нульовий рядок, то використовується останнє регулярне вираз.

У скалярному контексті повертається список, елементи якого - результати виконання виразів в дужках патерна ($1, $2, $3...). Зверніть увагу, що перший елемент $1.

$а = "/usr/local/perl/perl.bin"; # Аналізований рядок

Мета: Створити масив @dirs з іменами директорій.

Рішення: Найпростіший спосіб - скористатися split('\/'), але ми використовуємо дужки.

@dirs =($a=~ m[/(\w*)/(\w*)/(\w*)/(\w*)]);

Тут 'm[' - використовувати квадратні дужки як обмежувачі, (\w*) - шаблон алфавітно-цифрової послідовності.

В результаті @dirs рівний ('usr', 'local', 'perl')

q/строка/, 'рядок' Рядок літералів. Не інтерполюється. Усередині рядка дозволяється використовувати \' або \\ для позначення символів ' і \ :

print q#Привет.#; # Результат Привіт.

print 'O\'K'; # O'K

qq/строка/, "рядок" Інтерпольований рядок:

$var = 13;

print "\$var = $var"; # Результат: $var = 13

qx/строка/, `рядок` Рядок інтерполюється, а потім виконується як системна команда:

print `date`; #Результат: Thu Nov 14 13:36:49 MSK 1996

qw/строка/ Повертає список, елементи якого - слова рядка, розділені пропусками:

print qw/Построимся і врятуємося!/; # ('Построїмся','і','спасемся!')

s/шаблон/подстрока/egimosx Пошук за шаблоном і в разі успіху заміна підрядком. Повертає кількість проведених підстановок, інакше false (0). Якщо рядок в якій ведеться пошук не вказана (оператори =~ або != ), то використовується змінна $_ . Якщо як роздільник '/' використовувати одинарну лапку ('), то інтерполяції не буде, інакше можна застосовувати змінні в шаблоні або підрядку. Опції:

e - Розглядати праву частину як вираз.
g - Глобальний пошук.
i - Без відмінності регістра букв
m - багаторядкова змінна
о - компілювати шаблон один раз
s - однорядкова змінна
x - розширене регулярне вираз

Роздільник '/' можна замінити на будь-який алфавітно-цифровий символ окрім пропуску:








Дата добавления: 2016-04-02; просмотров: 648;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.012 сек.