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