Умовний оператор '?:' Цей оператор працює так само як і в С. Якщо вираз перед '?' істина, то виконується аргумент перед ':' - інакше після ':'.
$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; просмотров: 704;
