Основи Perl - рядки, числа, масиви, хеші. Використання регулярних виразів для пошуку за ключовими словами. Що принесли останні роки роботи

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

Про що наша книжка. Вона, звісно, ​​про мову Perl, тому що так заявлено у назві. Кому він потрібний, цей Perl? Тим, хто створює CGI-сценарії, займається адмініструванням системи за допомогою написання скриптів, а не клацаючи лівою кнопкою миші, обробляє тексти, вирішує багато інших завдань суміжних областейі при цьому потребує потужного, але простого застосування засобів, що дозволяє створювати великі програмиі дрібні програми і швидко їх випробувати. Тим, хто викладає програмування, теж корисно мати уявлення про цю мову, оскільки вона має цікаві властивості, відсутні в традиційних мовах програмування, що використовуються в процесі навчання.

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

Мова Perl створена системним програмістомЛаррі Уоллом (Larry Wall) як UNIX, що дозволяє «склеювати» з програмок, виконують окремі функції, великі сценарії на вирішення комплексу завдань, що з адмініструванням, обробкою тексту тощо. буд. мова програмування, в якому знайшли відображення багато тенденцій, що позначилися в технології програмування за останнє десятиліття, і набув широкого поширення у зв'язку з розвитком Inernet. Perl є основним засобом створення програм CGI, зручний для вирішення задач адміністрування Web-серверів, електронної поштита інших систем. Завдяки швидкості та легкості написання сценаріїв цією мовою він поширився і на інші платформи: DOS, Windows, OS/2, Mac, VMS та ін. Одна з основних переваг мови Perl – її відкритість та доступність. У мережі Internetможна отримати абсолютно безкоштовно вихідні текстиінтерпретатора perl (мова Perl - інтерпретована, що в деяких випадках є перевагою) та модулів його розширення.

Ця книга - самовчитель мови Perl, який вивчається, що називається, з нуля, тобто передбачається, що читач не знайомий з цією мовою - все необхідне він дізнається, послідовно вивчивши теми та закріпивши пройдений матеріал, відповідаючи на запитання та виконуючи вправи, наведені наприкінці кожного розділу. Повторимо, що пропонований матеріал представляє лише основи мови Perl. Наша книга жодною мірою не претендує на підручник з програмування мовою Perl. У ній ви не знайдете методологію програмування або готові рецепти розв'язання задач, в ній немає докладного опису модулів, що найчастіше використовуються, і розв'язання задач з їх допомогою, але, прочитавши книгу, ви придбаєте базові знанняякі дозволять розібратися в будь-якому сценарії Perl.

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

Ви володієте іншими мовами програмування? Якщо так, то вивчення Perl буде для вас просто насолодою. Якщо ж ні, то не поспішайте, спробуйте всі запропоновані вправи та приклади і не бійтеся експериментувати!

Походження

Perl з'явився в результаті діяльності однієї людини, і, за його власним визнанням, внаслідок її лінощів. Це - унікальна мова, суть якого неможливо передати простим описомтехнічні деталі. Perl – це стан мислення.

Одна з примх мови - його назва. Воно має кілька визначень. Спочатку Perl означав Practical Extraction Report Language (практична мова витягів та звітів). Однак, програмісти часто називають його Phatologically Eclectic Rubbish Lister або навіть Practically Everything Really Likable.

Давайте присвятимо кілька хвилин тому, щоб розібратися, що є Perl, і які завдання покладалися на нього за часів його створення. У далекому 1986 Larry Wall працював над завданням генерування звітів з великої кількості текстових файлів, що перетинаються один з одним. Будучи Unix-програмістом, а також, тому що завдання включало маніпулювання змістом текстових файлів, він насамперед спробував використовувати Awk. Але незабаром стало зрозуміло, що Awk для роботи не підходить, і, не маючи інших кандидатів для вирішення поставленого завдання, залишалося лише винаходити свій власний інструмент, який можна було б використати й у майбутньому.

Замість марно витрачати час, Larry просто винайшов нову мову програмування і написав інтерпретатор для нього. Це схоже на парадокс, але це не зовсім так - те, що ви робите - це завжди велика праця, але якщо ви зробите це правильно, то ця праця обов'язково окупиться.

Незабаром Larry запропонував своє дітище спільноті читачів матеріалів телеконференцій Usenet. Користувачі, які мають доступ до Usenet, забезпечили творцю Perl ефективну. зворотну підтримкуБагато запитань Larry навіть і не збирався ставити перед своєю маленькою новою мовою програмування.

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

Larry вже не супроводжує Perl наодинці, але зберігає свій ексклюзивний титул головного розробника.

Perl-програми дуже схожі на Сі-програми, - можливо, тому що Perl був написаний на Сі, а можливо, тому що Larry знайшов зручними деякі конструкції Сі. Але Perl менш педантичний і набагато лаконічніший, ніж Сі.

Perl покликаний допомогти програмісту у виконанні рутинних завдань, які для shell надто важкі або погано переносяться, а для Сі (або будь-якої іншої мови) - занадто розумні або складні кодування.

Коли ви освоїте Perl, ви, можливо, виявите, що стали витрачати помітно менше часу на правильне укладання в лапки різних параметрів shell (або на коректне виконання Сі-оголошень), а більше - на читання Usenet-новин та катання з гір на лижах, тому що Perl – чудовий засіб для вашого вдосконалення як програміста. "Хтось із стародавніх" сказав: "Не варто вивчати мову програмування, яка радикально не змінює вашого уявлення про програмування". Будьте впевнені – вивчивши Perl, ви подивіться на програмування з зовсім іншої точки зору.

Потужні конструкції цієї мови дозволяють створювати з мінімальною витратою сил ефективні рішенняі універсальні інструменти. Ці інструменти можна використовувати і надалі, тому що написані на Perl програми відрізняються високою переносимістю та готовністю до використання. В результаті у вас з'явиться ще більше часу для читання Usenet-новин та відвідування з друзями барів.

Perl дуже добре вміє поводитися з завданнями низького рівняособливо після виходу п'ятої версії мови.

Вартість та ліцензія

Perl є вільним. Якщо бути точнішим – Perl поширюється за відкритою ліцензією GNU (GNU Public License). Повний вихідний код та документація абсолютно вільні для копіювання, компілювання та друку. Всі програми, написані вами на Perl - ваші, і ви можете робити з ними все, що захочете.

Крім UNIX-комп'ютерів, Perl також існує для інших платформ - Windows, DOS, Atari, Amiga і.д.

Чи встановлено у вас Perl?

Дуже легко дізнатися, чи є у вас Perl. Просто дайте у командному рядку наступну команду:

perl -v This is perl, version 5.001
Unofficial patchlevel 1m.
Copyright 1987-1994, Larry Wall Win32 port Copyright 1995 Microsoft Corporation. Всі права захищені.
Розроблено hip communications iNC., //info.hip.com/info/
Perl for Win32 Build 107
Built Apr 16 1996@14:47:22
Perl може бути зроблений тільки під термінами її архітектурної ліцензії або GNU General Public License, яка може бути заснована в Perl 5.0 source kit.

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

Ваша перша програма на Perl

Ваша перша програма Perl ілюструє виведення рядка тексту на екран. Для початку ви повинні створити простий текстовий файл, в якому буде утримуватися ваша Perl-програма. Потім ви запустите файл із вашою програмою.

Створення програми

Perl-програма є звичайним текстовим файлом, що містить кілька конструкцій мови. Останні зазвичай нагадують суміш із Сі, Unix shell script та англійської мови. Загалом саме так воно і є насправді.

Perl-код може бути досить різноманітним. Ось кілька основних правил:

Провідні прогалини у рядку ігноруються. Ви можете розмістити оператор мови, де захочете: на початку лінії, з відступами (рекомендується) або навіть вирівняти праворуч (але в такому випадку читати текст програми і щось зрозуміти буде вкрай важко);

Конструкція мови повинна закінчуватися крапкою з комою, за винятком випадків, коли дана конструкція є останньою в блоці або файлі, або це оператор eval;

Пробіли, табуляція, порожні рядкиіррелевантні, - одна прогалина також гарна, як сто таких же прогалин. Це означає, що ви можете розбивати конструкцію мови на кілька рядків для ясності. Рядок - це зазвичай серія символів, укладених у лапки. Глава 2 "Числові та рядкові літерали" містить більше докладний описрядків;

Все що слідує за символом "#" ігнорується, якщо це не всередині якого-небудь рядка. Використовуйте цю можливість для забезпечення вашого коду корисними коментарями. Слід зазначити, що багаторядкових коментарів (наприклад, як у мові Сі) у Perl немає.

Аналогічно shell-скрипту, Perl-програма складається з усіх операторів Perl, що є у файлі і розглядаються разом як одна велика програма, що підлягає виконанню. Поняття main-функції, як у Сі, у Perl немає.

Все сказане нижче жодною мірою не претендує на повноту і достовірність.

Заздалегідь хочу попередити вас, що ця стаття не зробить із вас супер PERL програміста, але вона дасть вам деякі необхідні початкові відомості, які допоможуть вам у подальшому вивченні цього найцікавішої мовипрограмування.

Цю статтю я вирішив написати, після того як дізнався наскільки складно "врубатися" у все, навіть якщо у вас є під рукою якийсь посібник PERL. Скрізь, вже на самому початку, починають посилатися на якісь загадкові терміни та команди, а вам залишається тільки здивовано плескати очима, або (якщо ви все ж таки щось зрозуміли) змусити ці програми працювати (не "як треба", а взагалі !). Цю статтю можна було б назвати "PERL для чайників", якби вона охоплювала весь матеріал, але тут я ставлю собі за мету дати вам лише необхідні початкові поняття, і так би мовити "підготувати до подальших битв":). Хоча цілком можливо, що надалі, "на прохання трудящих", ця невелика стаття розростеться в щось більше.

Отже… починаємо!

Спочатку повідомлю вам, що PERL необхідно встановити на ваш комп'ютер. Цю, здавалося б, просту операцію деякі мої знайомі повністю пропускали, а потім, написавши простеньку програму, довго намагалися її запустити... ;) Найбільш доступний пакет PERL (на мій погляд) - це ActivePerl, хоча цей пакет орієнтований на користувачів Windows , а якщо у вас UNIX, то можна завантажити що-небудь рідне з www.perl.com. Так чи інакше, ви дістанете та поставите собі perl (якщо вже цього не зробили). Так от: у вас з'явиться нова папочка "perl", але це зовсім не означає, що всі проги потрібно поміщати саме туди:) Perl, що там сидить, лише виконує всі ваші геніальні твори з розширенням *.pl, а де вони самі знаходяться - одному користувачеві відомо:) (справедливо для користувачів windowsіз встановленим пакетом ActivePerl, т.к. він порівнює файли *.pl).

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

#!/usr/bin/perl

Вся справа в тому, що ця мова створювалася на базі ОС UNIX, а цей рядок нам намагаються передати в "спадщину" від їхньої операційки. Однак слід пам'ятати, що на сервері (якщо ви вирішите скинути туди свої проги) може стояти і UNIX.

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

Практично всі посібники з цієї мови починаються з найпростішої програми, яка виглядає приблизно так:

print ("hello, WORLD!\n");

Деякі з вас уже, напевно, скопіювали наведену програму у свій файл і помітили, що вона швиденько відкривається і швидко закривається. Це пов'язано з тим, що програма є програма, і після того, як вона виконається - відразу ж закриється, тому додайте до програми ще один рядок з наступним змістом:

У результаті все це набуде наступного вигляду:

print ("hello, WORLD!\n");
<>;

Не так і просто виглядає для непосвяченого... Навіть трохи лякаюче... Але це тільки для непосвячених, насправді все - простіше нікуди! :) Не віриться? Зараз доведу.
По-перше, вам потрібно дізнатися, що print – це команда, яка виводить інформацію на стандартний висновок STDOUT (STanDart OUT або, простіше кажучи – виведення на монітор).
По-друге, незрозумілість як \n - це перехід на новий рядок (newline), але з програми, як міг би злякатися деякі, а інформації на екрані, тобто. якби ви продовжили б текст, укладений у лапки, то після цього символу він був би надрукований з нового рядка. А якщо вам знадобилося б у самому тексті використати зворотний сліш(Шелс:), то перед ним треба поставити ще один шовс. Наприклад:

print "\"; #Команда, після якої Perl #виведе сигнал на SPICER print "\\"; #Perl просто виведе на екран \a

Потім хочу вас порадувати: дужки нафіг не потрібні :) Їх використання залежить повністю від вашого настрою, хоча в мануалах кажуть, що це нібито допомагає виділити текст у програмі. Загалом – кому як більше подобається...
Як ви вже напевно здогадалися - лапки потрібні для укладання в них тексту, так що залишилося два незрозумілі пунктики. Але перед тим як зупинитися на них, вважаю за необхідне пояснити вам яка буває інформація в Perl.
Фундаментальною одиницею інформації у Perl є скаляр (scalar), тобто. окреме значення, що зберігається в окремій змінній.

$a = "hello, world!"; #Присвоїти змінній $a текст
$ b = 777; #Присвоїти змінній $b деяке число

У цих змінних зберігаються рядки, числа та посилання. При цьому необхідно розуміти різницю між числами як такими та числами, що містяться в рядку.

$ abc = "123"; #Число у рядку
$123 = 123; #Кількість як таке

Якщо вам потрібне для обчислень число, то просто не ставте подвійних лапок.

Крапка з комою в кінці кожного рядка - це власне... кінець рядка, з чого випливає, що ви можете написати всю програму в один рядок, але нам що - рядків шкода чи що:) З вище сказаного є виняток: знак # говорить про все, що є в рядку після нього - це коментар, і до програми вже не відноситься.
Знак ромб<>- це за умовчанням або, кажучи зрозумілою мовою- стандартне введення з монітора (роз'яснюю: на моніторі з'являється запит, а вводите ви звичайно через клаву. Потім натискаєте ентер і введене значення вже в змінній Perl, якщо вона була задана). Вся хитрість додавання цього ромба в нашому випадку в тому, що він буде запитувати у вас це введення, поки ви не натиснете кнопку "enter", а так як у програмі не зазначено, що робити з цим введенням, то perl про нього просто забуде і буде вважати нашу програму завершеною. І в результаті виконання цієї програми ми з вами побачимо на своїх моніторах текст Hello, world! .

Тепер трохи ускладнимо нашу програмку:

print "Enter Your Name: ";
$name =<>;
print "hello $name!";
<>;

Вам слід усвідомити, програми виконуються рядково, тобто. спочатку перший рядок, після нього другий і т.д.

Отже, у першому рядку ми виводимо пропозицію запровадити ім'я користувача. У другому рядку ми його зчитуємо у змінну $name. $name - це, як говорилося, скалярна змінна Perl, яка починається знаком долара. Забігаючи вперед, скажу вам, що крім змінних, що починаються з долара, бувають також масиви (@масив), хеші (%хеш), і ще кілька видів, про які поки що рано розповідати. Між змінною та ромбом стоїть рівність, це означає, що ми присвоюємо змінній результат запиту. У третьому рядку ми виводимо слово hello, а потім виводимо те, що зберігалося в змінній $name. У нашому випадку це ім'я, яке ми просили запровадити.

Зробимо ще одну відволікання, в якій я розповім вам, що можна робити зі змінними... З ними можна робити ВСЕ! І це не перебільшення. Наприклад, можливе таке:

$a = 3;
$ b = 4;
$c = $a+$b; #Скласти дві змінні та
#привласнити їх третьою
print $c; # Вивести число, що вийшло
print $a+$b; # Теж саме, тільки без
# залучення третьої змінної

Сподіваюся з цим все зрозуміло... А доки до деяких доходить, ми напишемо програмку, яка виконує команди ДОС dir. Для тих хто не знає - dir - команда, що виводить на екран вміст директорії, в якій ви знаходитесь.

$ dos = `dir`;
print $dos;
<>;

Ця програма зчитує в змінну $ dos результат виконання команди dir, яка укладена у зворотні лапки, (якби це були прості лапки, то вийшла б не команда, а просто слово) після чого виводить на монітор цей результат.

Тепер повернемося до наших баранів, вірніше поки лише до баранчиків:) Ми навчилися виводити на екран необхідний нам текст, отримувати інформацію від користувача, а також дізналися, що ДОС команди у зворотних лапках будуть виконуватися як ДОС команди:) Саме час написати програму, яка запитуватиме не що інше, як ці самі команди:

print "enter comand:";
chmod($com =<>);
print `$com`;
<>;

З міркувань безпеки украй не рекомендую вводити команду FORMAT, здогадайтеся чому:) З новацій потрібно виділити появу команди chmod(). Ця команда прибирає з інформації, яку ми отримуємо у запиті знак нового рядка \n, який є за замовчуванням. Те, що знаходиться у другому рядку - це скорочений запис двох рядків:

Вигадуємо ми цим лише кілька символів, але все одно приємно:)

На цьому вважаю, що перші кроки ви пройшли та готові продовжити тернистий шлях вивчення Perl.

З'явився 1987 року.

Ця мова програмування багата можливостями по роботі з текстом, що визначає основну сферу його застосування - маніпуляції з текстом, зокрема.

У цій статті будуть описані кроки щодо встановлення середовища виконання Perl, вибору засобів розробки та створення першої програми. Наприкінці цього посібника ви знайдете список джерел, які допоможуть швидко освоїти основи Perl, а також вивчити мову більш поглиблено.

Perl - це єдина мова, програми якою виглядають однаково до і після RSA-шифрування.

На момент написання цього матеріалу актуальною версієюінтерпретатора є 5.22.0. Perl 6 готується до релізу у 2015 році, але ще недостатньо документований.

Мова програмування Perl не рекомендується брати в якості мови для знайомства з програмуванням. Якщо ви абсолютний новачок - краще почніть з чогось менш згубного для вашої свідомості. Серйозно, ось що говорив про цю мову Йон Ріббенс:

PHP - це маленьке зло, створене некомпетентними новачками, тоді як Perl - це велике і підступне зло, створене вмілими, але збоченими професіоналами.

До речі, з PHP починати теж не варто. А тепер ближчий до справи.

Середовище виконання

на Наразі Perl офіційно підтримується трьома провідними платформами: Mac OS X, Unix та Windows. На перших двох із них середовище виконання Perl є встановленим, і її версію можна дізнатися через команду perl -v (свіжу версію можна завантажити), а для операційних систем сімейства Windowsінтерпретатор Perl доступний для завантаження на цій сторінці. Рекомендується вибирати ActivePerl (дистрибутив від ActiveState) як найпоширеніший.

Інтегроване середовище розробки (IDE)

Perl, на жаль, не дуже популярний серед розробників середовищ розробки, тому на вибір вам надано лише невелику кількість спеціалізованих інструментів.

Padre, the Perl IDE

Мультиплатформне легковажне середовище розробки, створене спеціально для Perl і зручне для новачків. Крім традиційних підсвічування синтаксису та автодоповнення, має також вбудовані інструменти рефакторингу. До речі, Padre написана сама на Perl 5.

Текстові редактори

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

  • KomodoEdit - урізана версія комерційного середовища розробки Komodo IDE, що розробляється ActiveState (та сама, яка підтримує дистрибутив ActivePerl), має функції автодоповнення, підсвічування синтаксису, множинних курсорів і підказок з документації;
  • Vim - текстовий редактор, інтерфейс якого може виявитися незвичним для Windows-користувача; підтримує підсвічування синтаксису;
  • Sublime Text - один із самих інструментів редагування вихідного коду з підсвічуванням синтаксису, автодоповненням тощо, функціонал якого розширюється безліччю існуючих плагінів;
  • Notepad++ - легковажний текстовий редактор, що відрізняється найбільш коректним, після KomodoEdit, підсвічуванням синтаксису; функціонал може бути розширений плагінами, проте спеціально для Perl їх досить мало.

CodeGround

Крім того, якщо ви хочете спробувати лише програмування на Perl і не хочете встановлювати додаткове програмне забезпеченняна свій комп'ютер, ви можете скористатися сервісом CodeGround, що надає доступ до онлайн-середовищ розробки з базовим функціоналом для більшості мов програмування, до яких входить і Perl.

Перший "Привіт, мир!" на Perl

Традиційно пропонуємо почати знайомство з новою мовою з усієї добре відомої програми:

Print "Hello World\n";

Збережіть цей рядок у файлі hello.pl і запустіть щойно створену вами програму командою:

Perl hello.pl

Однак спершу переконайтеся, що виконувані файли Perl є серед ваших змінних середовища (змінних оточення), а також у тому, що ви викликається perl з папки з вихідним файлом hello.pl. У разі успіху, ви побачите очікуване Hello, world!

Вітаємо, ви почали писати на Perl!

А далі - в дорогу...

Відмінний англомовний посібник з мови програмування Perl для швидкого стартуви можете знайти на сайті tutorialspoint.com. Крім цього, існує офіційний навчальний ресурс -