Функції в Perl, Perl, Статті, Програмування - Програмування C, Delphi, C#

chomp (string), chomp (array)використовує значення спеціальної змінної $/ для останнього символу рядка string чи кожного елемента масиву array. Останній символ буде видалено лише в тому випадку, якщо він дорівнює значенню зміною $/.

chop (string), chop (array)робить те саме, що й попередня функція, але як результат ця функція повертає сам віддалений символ.

chr (number)повертає символ ASCII-таблиці з кодом number. Наприклад, chr(65) поверне символ 'A'.

crypt (string1, string2)шифрує рядок string1. Perl не дає механізмів для дешифрування рядка.

index (string, substring, position)повертає позицію першого входження рядка substring у рядку string враховуючи позицію position. Якщо параметр position не заданий, порівняння рядків ведеться від початку рядка string.

join (string, array)повертає рядок, у якому всі елементи масиву array з'єднані рядком string. Наприклад, join (">>", ("a","b","c")) поверне рядок "a>>b>>c";

lc (string)поверне рядок, де всі символи великі. Наприклад, lc ("ABCD") поверне "abcd"

lcfirst (string)поверне рядок, в якому тільки перший символ великої. Наприклад, lcfirst ("ABCD") поверне "aBCD"

length (string)повертає довжину рядка.

rindex (string, substring, position)те саме, що й index (дивіться вище), але повертає позицію останнього входження.

split (pattern, string, limit)розбиває рядок string на частини, приймаючи за кордон значення параметра pattern. Наприклад, ($a, $b, $c) = split ("::", "1::2::3") надасть змінним $a, $b, $c значення "1", "2", " 3" відповідно. Якщо ж результатвикористовується у скалярному контексті, то функція повертає кількість знайдених таким чином елементів.

substr (string, offset, length)повертає частину рядка string, як визначено параметрами offset (зміщення) та length (довжина). Якщо length не вказано, повертається все, що знаходиться на проміжку від offset до кінця string. Негативні значення offset можна використовувати для сканування з правого краю рядка string.

uc (string)те саме, що і lc (дивіться вище), але всі символи великі.

ucfirst (string)те саме, що lcfirst (дивіться вище), але символ заголовний.

Якщо Perl зустрічає число там, де очікує зустріти рядок, він просто перетворює число в рядок, звільняючи вас від додаткової роботи.

Деякі функції з наведених вище використовують для своєї роботи спеціальну змінну $_, про яку ви дізнаєтеся у розділі 9 "Файли" та розділі 12 "Використання спеціальних змінних".

Наступні приклади демонструють застосування деяких рядкових функцій. Після того, як ви зрозумієте роботу кількох рядкових функцій, ви можете правильно використовувати й інші.

Приклад: зміна значення рядка

Дуже часто вам, можливо, знадобиться змінювати частини рядків – як правило, десь у середині рядка. Коли перед вами буде таке завдання, ви можете скористатися функцією substr(). Зазвичай ця функція використовується для отримання рядка з існуючого рядка - на підставі трьох параметрів - вихідного рядка, зміщення, яке є початок нового рядка та довжини нового рядка.

$firstVar = substr("0123BBB789", 4, 3); print("firstVar = $firstVar\n");Програма надрукує:

Функція поверне рядок, починаючи з 5 символу, і довжиною в 3 символи.

Застосування цієї функції стає набагато цікавішим, коли ви використовуєте її зліва від оператора присвоєння:

$ firstVar = "0123BBB789"; substr($firstVar, 4, 3) = "AAA"; print("firstVar = $firstVar\n");

Приклад: пошук рядка

Інше цікаве завдання, яке ви можете вирішити за допомогою рядкових функцій - це пошук заданого підрядка в рядку. Наприклад, у вас є повне ім'я файлу, включаючи шлях: "C:WINDOWSTEMP\WSREWE.DAT", а вам потрібно отримати з нього тільки ім'я файлу. Ви можете це зробити, знайшовши останній зворотний сліш (символ '\'), а потім застосувавши функцію substr().

Пам'ятайте, що в рядку для вказівки символу '\' необхідно використовувати подвійний символ '\\'. Якщо ви забули матеріал, зверніться до розділу 2 "Числові та стрінгові літерали".

$pathName = "C:\WINDOWS\TEMP\WSREWE.DAT"; $position = rindex($pathName, "\") + 1; $fileName = substr($pathName, $position); print("$fileName\n");

Ми не вказали тут третій параметр функції substr() - length - це тому, що нам потрібно взяти підрядок до кінця вихідного рядка.

Функції до роботи з масивами.

Масиви - це більшість Perl і Perl може вам запропонувати багато функцій для роботи з ними.

Функції, які можна використовувати для роботи з масивами:

defined (variable)повертає true якщо variable має дійсне значення, і false якщо variable поки не було надано значення. Це стосується не тільки масивів, дані будь-якого типу можуть бути перевірені таким чином. Щодо подібних операцій із ключами асоціативних масивів дивіться функцію exists().

delete (key)видаляє пару "ключ-значення" з даного асоціативного масиву. Якщо ви видалите подібним чином значенняз масиву оточення %ENV, то зміниться оточення лише поточного процесу.

exists (key)повертає true, якщо key є ключем заданого асоціативного масиву. Наприклад, exists ($array("Orange")) поверне true, якщо асоціативний масив %array має ключ зі значенням "Orange".

join (string, array)повертає рядок, у якому всі елементи масиву array з'єднані рядком string. Наприклад, join (">>", ("a","b","c")) поверне рядок "a>>b>>c".

keys (assoc_array)повертає список усіх ключів, що є в заданому асоціативному масиві. Список не складається у певному порядку.

map (expression, array)обчислює вираз expression для кожного елемента масиву array. Спеціальна змінна $ надається кожному елементу масиву array перед обчисленням виразу expression.

pack (string, array)створює бінарну структуру, використовуючи string як шаблон, масиву array. Докладніше дивіться у розділі 8 "Посилання".

pop (array)повертає останнє значення масиву array, зменшуючи його розмір на одиницю.

push (array1, array2)додає вміст масиву array1 до масиву array2, змінюючи розмір масиву array1 належним чином.

reverse (array)коли використовується в контексті масиву, змінює порядок проходження елементів масиву на протилежний. Коли ж використовується у скалярному контексті, масив перетворюється на рядок, а вже рядок піддається реверсивній зміні.

scalar (array)розглядає масив як скаляр та повертає кількість елементів у масиві.

shift (array)повертає перше значення масиву array, зменшуючи розмір на одиницю.

sort (array)повертає список, що містить елементимасиву array відсортовані в заданому порядку. Докладніше дивіться розділ 8 "Посилання".

splice (array1, offset, length, array2)замінює елементи масиву array1 елементами масиву array2. Повертає список, що містить всі видалені елементи.

split (pattern, string, limit)розбиває рядок string на частини, приймаючи за кордон значення параметра pattern. Наприклад, ($a, $b, $c) = split ("::", "1::2::3") надасть змінним $a, $b, $c значення "1", "2", " 3" відповідно. Якщо результат використовується в скалярному контексті, то функція повертає кількість знайдених таким чином елементів.

undef (variable)завжди повертає невизначене значення. Крім того, "розподіляє" змінну variable, яка має бути скаляром, цілим масивом або ім'ям підпрограми.

unpack (string, array)робить події, цілком протилежні діям функції pack() - дивіться вище.

unshift (array1, array2)додає елементи масиву array1 до початку масиву array2. Додані елементи зберігають оригінальний порядок. Повертає новий розмір масиву array1.

values ​​(assoc_array)повертає всі значення заданого асоціативного масиву. Повертається список не формується у певному порядку.

Як і у випадку з рядковими функціями, ми розглянемо лише кілька функцій для роботи з масивами.

Приклад: друк асоціативного масиву.

Як ми вже знаємо, функція each() повертає пару ключ-значення асоціативного масиву. Це називається ітерацією елементів масиву. Тобто, функція починає роботу від початку масиву, і закінчує лише у разі досягнення кінця масиву.

%array = ("100", "Green", "200", "Orange"); while (($key,$value) = each(%array)) print("$key = $value\n"); >

100 = Green 200 = OrangeПо досягненні кінця масиву, функція повертає false.

Приклад: перевірка існування елемента масиву

createPair("100", "Kathy Jones"); createPair("200", "Grace Kelly"); createPair("100", "George Orwell"); while (($key, $value) = each %array) print("$key, $value\n"); >; sub createPair my($key, $value) = @_ ; $array = $value; >;

100, George Orwell 200, Grace Kelly

Як ви бачите, перша пара масиву була перезаписана третьою парою. Таким чином, щоб уникнути помилок, нам потрібно мати можливість достовірно перевірити - чи немає в масиві такого ключа, який ми збираємося використовувати. Наступна програма показує, як це робиться:

createPair("100", "Kathy Jones"); createPair("200", "Grace Kelly"); createPair("100", "George Orwell"); while (($key, $value) = each %array) print("$key, $value\n"); >; sub createPair my($key, $value) = @_ ; while (defined($array)) $key++; > $array = $value; >;

100, George Orwell 101, Kathy Jones 200, Grace Kelly

Як ви бачите, програма помітила, що ключ "100" вже існує і нові дані додала в масив з ключем "101". Якби, наприклад, ключ "101" вже існував у масиві, нові дані таким чином додалися б з ключем "102".