Невеликий faq по мові perl

Отже, потрібно вивчити мови для створення програм, що працюють на сервері. Зазвичай їх розробляють на Perl (Practical Extraction and Report Language практичну мову витягів і звітів), що застосовується також для обробки потоків інформації. Спочатку передбачалося, що він буде використовуватися в ОС Unix, але в подальшому Perl стали переносити на інші платформи, і зараз він існує в самих різних версіях для Unix, Windows, MS-DOS, OS / 2, MacOS, Amiga, Atari ST, VMS , Plan 9 та ін.

Для чого потрібен Perl?
Perl призначений для виконання завдань командних сценаріїв Unix в тих випадках, коли вони занадто важкі, погано переносите або складні для програмування на іншій мові, наприклад на Сі. Іноді вміст Perl-програм виглядає для непосвячених як випадковий набір символів, але, природно, він має контрольну суму, а кожен його символ своє призначення.

Для створення і тестування Perl-програм необхідні:

Лістинг 1. Приклад програми на Perl
#! / Usr / local / bin / perl @passwords = qw (inet basic net); print Enter the login :; $ Login =; chomp ($ login); if ($ login eq Root) else elseif ($ i work in Microsoft, MY => write this article, BC => work as the President of USA);
Індекси і елементи масиву можна укладати як в апострофи, так і в лапки. Щоб перебрати всі значення АМ, потрібно використовувати оператор foreach. Він призначений для організації циклів, як і деякі інші, зокрема while. Можна звертатися до ключів і значень за допомогою операторів keys і values.

Спеціальний асоціативний масив% ENV зберігає вміст всіх змінних, індексованих на ім'я. Так, $ ENV повертає поточне значення шляху пошуку. Існує також функція each, яка веде список, який складається з двох елементів ключа і значення. При кожному наступному виклику вона повертає нову пару, наприклад

while (($ key, $ value) = each% ENV)
Робота з файлами і каталогами
Для нормальної роботи в Perl з файлами і каталогами слід запам'ятати кілька важливих процедур (див. Таблицю).

Дескриптор є особливим видом символьних змінних (literal string). Дескриптори файлів, так само як і мітки, застосовуються без спеціального префіксного символу, тому їх можна сплутати з існуючими або зарезервованими словами (для підпрограм, команд та ін.). При програмуванні назви дескрипторів рекомендується писати великі літери. По-перше, вони легко помітні серед іншого тексту, по-друге, завдяки цьому програма буде правильно виконуватися. Дескриптор зазвичай являє собою «назва» файлу, на який посилається користувач. Як і при програмуванні на Basic, Паскалі або Сі / Сі ++, дескриптори в Perl подібні змінним, присутнім в синтаксисі операцій відкриття, закриття, зчитування або запису в файл. Подібно іншим мовам, Perl також використовує дескриптори в операціях маніпулювання вмістом файлів. Однак є й інші варіанти їх застосування.

Існує три різні способи відкриття файлу для проведення читання (read), доповнення (append) і записи (write).

Режим читання (Read) найпростіший. Синтаксис операції open наступний:

open (HANDLE, filename.txt);
Оператор open використовується для відкриття файлу. В круглих дужках укладено дескриптор файлу HANDLE. Надалі при виконанні операцій над файлом filename.txt і його вмістом на нього будуть приведені посилання в програмі. В лапках стоїть ім'я файлу.

Для зчитування інформації з файлу виконується так звана операція ромба, що позначається символами ():

open (HANDLE,> filename.txt);
Відмінність синтаксису операцій записи від синтаксису читання полягає лише в тому, що перед ім'ям файлу стоїть символ «більше ніж» (>). Цей знак повідомляє, що слід створити вказаний в лапках файл і записати або оновити (якщо він вже існує) його вміст. Щоб записати в нього інформацію, потрібно звернутися до допомоги оператора print:

open (HANDLE,> filename.txt); print HANDLE Записати цей текст в файл. ;
Режим до спробі відкрити файл для читання видається значення false, то це означає, що файлу немає або доступ до нього заборонений. А коли при відкритті файлу для введення інформації це значення повертається, то можна зробити висновок, що або файл призначений лише для читання, або неможлива запис в каталог або доступ до нього. Якщо потім програма завершить свою роботу або файл заново відкриється, то не потрібно закривати його після закінчення роботи з дескриптором операція відкриття файлу закриває раніше задіяний дескриптор. Проте краще все ж закрити файл за допомогою операції close. Подібна структура є «хорошим тоном» при програмуванні:

close (HANDLE);
Налагодження. Всякий раз при відкритті файлу розумно використовувати разом з оператором open оператор die. Буває, що файл з якоїсь причини не можна правильно відкрити. Програма начебто виконалася, як було потрібно, а в файл записалося зовсім не те, що очікувалося. У подібному випадку оператор die перериває виконання програми і видає повідомлення про помилку при відкритті файлу.

У синтаксисі суміщення open і die використовується «логічне АБО» (||):

open (HANDLE, >> filename.txt) || die Помилка додавання в файл filename.txt $ !;
Функція die, назву якої можна перекласти з англійської як «відкрийся або помри», перериває виконання програми. Видається повідомлення про помилку, а також інформація про те, що її викликало. Perl зберігає відомості про останню системну помилку в спеціальній змінній $. Якщо після функції die вставити $. то від ОС будуть отримані додаткові дані, які допоможуть налагодити програму.

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

$ Filename = filename.txt; if (-e $ filename) else
І для декількох файлів можна за один раз з'ясувати, чи існують вони, просто знищивши перший рядок попереднього прикладу і замінивши другу конструкцією

if (-e filename.001 -e filename.002) <
Є безліч інших операцій для перевірки файлів. Наприклад, щоб переконатися в наявності будь-якого файлу і можливості читання з нього, потрібно замість операції -e виконати -r, а в разі вимоги можливості запису w. Можна перевірити один і той же файл на доступність читання і запису інформації, виконавши наступне:

@files =; foreach (@files)
При більшості подібних перевірок, а їх близько 20, повертається значення true або false.

Відмінності від Win32. При роботі на Perl під управлінням Windows існують деякі нюанси, про які слід знати. По-перше, потрібно вказувати повний шлях до файлу (разом з ім'ям диска), над яким будуть виконуватися будь-які дії, наприклад

open (HANDLE, c: /scripts/newfile.txt) || die Error opening c: /scripts/newfile.txt $ !; ... close (HANDLE);
По-друге, блокування файлу відбувається інакше, ніж в Unix-системах. При використанні Windows 9.x ця операція взагалі не підтримується, а в Windows NT виконується досить своєрідно перед виконанням команд копіювання або зміни імені файлу потрібно впевнитися, що ви вже закрили його. Інакше вони просто не виконуватися.