Назва

perl - мова практичного здобуття (даних) і звітування (Practical Extraction and Report Language)

Використання

   **perl [ -sTuU ] [ -hv ] [ -V[:** _змінна_конфігурації_  **] ]**
        **[ -cw ] [ -d[:** _відладчик_ **] ] [ -D[** _число/список " ] ]"_
        **[ -pna ] [ -F** _шаблон_ **] [ -l[** _вісімкове_ **] ] [ -0[** _вісімкове_ **] ]**
        **[ -I** _каталог_ **] [ -m[-]** _модуль_ **] [ -M[-]'** _модуль..._'** ]**
        **[ -P ] [ -S ] [ -x[** _каталог_ **] ]**
        **[ -i[** _розширення_ **] ] [ -e** ' _команда_ <nowiki'</nowiki> **] [ -- ] [** _файл_програми_ **]**
        **[** _аргумент_ **]...**

Опис

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

Для полегшення пошуку, посібник Perl розділено на декілька розділів.

Загальний огляд

perl(1) : Загальний огляд Perl (цей розділ)

perlintro(1) : Ознайомлення з Perl для початківців

?perltoc(1) : Зміст документації Perl

Посібники

?perlreftut(1) : Коротке ознайомлення з посиланнями

?perldsc(1) : Ознайомлення зі структурами даних мови Perl

?perllol(1) : Структури даних Perl: масиви масивів

perlrequick(1) : Швидке ознайомлення з регулярними виразами мови Perl

perlretut(1) : Посібник по регулярних виразах мови Perl

?perlboot(1) : Посібник об'єктнозорієнтованого програмування для початківців

?perltoot(1) : Посібник об'єктнозорієнтованого програмування, частина 1

?perltooc(1) : Посібник об'єктнозорієнтованого програмування, частина 2

?perlbot(1) : Об'єктнозорієнтовні хитрощі та приклади

?perlstyle(1) : Керування по стилю мови Perl

?perlcheat(1) : Perl-шпаргалка

?perltrap(1) : Пастки мови Perl

?perldebtut(1) : Посібник по зневадженню Perl

?perlfaq(1) : ЧАПи по Perl

?perlfaq1(1) : Загальні питання про Perl

?perlfaq2(1) : Встановлення та вивчення Perl

?perlfaq3(1) : Засоби програмування

?perlfaq4(1) : Оперування даними

?perlfaq5(1) : Файли та формати

?perlfaq6(1) : Регулярні вирази

?perlfaq7(1) : Спірні питання мови Perl

?perlfaq8(1) : Взаємодія з системою

?perlfaq9(1) : Взаємодія з мережою

Довідкові посібники

?perlsyn(1) : Синстаксис мови Perl

?perldata(1) : Структури даних Perl

?perlop(1) : Оператори та їхній пріоритет

?perlsub(1) : Функції

?perlfunc(1) : Вбудовані функції

?perlopentut(1) : Посібник функції open()

?perlpacktut(1) : Посібник функції pack() і unpack()

?perlpod(1) : Власна система документації Perl

?perlpodspec(1) : Опис формату pod-документації

?perlrun(1) : Виконання Perl та опції

?perldiag(1) : Діагностичні повідомлення Perl

?perllexwarn(1) : Лексичні попередження та керування ними

?perldebug(1) : Зневадження Perl-програм

?perlvar(1) : Попередньо-визначені змінні Perl

perlre(1) : Регулярні вирази Perl, повне визначення

?perlreref(1) : Регулярні вирази Perl, швидкий довідник

?perlref(1) : Посилання, повне визначення

?perlform(1) : Формат виводу Perl

?perlobj(1) : Об'єкти в Perl

?perltie(1) : Об'єкти, приховані за звичайними змінними

?perldbmfilter(1) : Фільтри DBM мови Perl

?perlipc(1) : Міжпроцесна взаємодія

?perlfork(1) : Інформація щодо fork()

?perlnumber(1) : Семантика чисел мови Perl

?perlthrtut(1) : Посібник по програмних каналах

perlothrtut(1) : Старий посібник по програмних каналах

?perlport(1) : Керівний посібник по портабельності

?perllocale(1) : Підтримка локалізації

?perluniintro(1) : Ознайомлення з Юнікодом

?perlunicode(1) : Підтримка Юнікоду мовою Perl

?perlebcdic(1) : Використання Perl на EBCDIC-платформах

?perlsec(1) : Посібник по безпеці мови Perl

?perlmod(1) : Модулі Perl: як вони працюють

?perlmodlib(1) : Модулі Perl: як їх писати та використовувати

?perlmodstyle(1) : Модулі Perl: стиль написання модулів

?perlmodinstall(1) : Модулі Perl: як встановлювати модулі зі CPAN

?perlnewmod(1) : Модулі Perl: приготування нового модуля до розповсюдження

?perlutil(1) : Знаряддя, що входять у комплект дистрибутиву Perl

?perlcompile(1) : Ознайомлення з набором програм компіляції Perl

?perlfilter(1) : Фільтр вихідного коду Perl

Внутрішня побудова та інтерфейс для мови C

?perlembed(1) : Спосіб інтегрувати Perl у ваші додатки на C або C++

?perldebguts(1) : Внутрішня побудова та підказки по зневадженню Perl-програм

?perlxstut(1) : Посібник XS Perl

?perlxs(1) : Інтерфейс програмування XS Perl

?perlclib(1) : Внутрішні заміни стандартних функцій бібліотеки C

?perlguts(1) : Внутрішні функції Perl для тих хто пише розширення

?perlcall(1) : Умовності щодо виклику Perl із C

?perlapi(1) : Перелік API (інтерфейсу програмування додатків) Perl (автоматично генерований)

?perlintern(1) : Внутрішні функції Perl (автоматично генерована сторінка)

?perliol(1) : API (інтерфейс програмування додатків) C для Perl-втілення багаторівневого вводу/виводу

?perlapio(1) : Внутрішній абстрактний інтерфейс вводу/виводу Perl

?perlhack(1) : Інструкція для гекерів Perl

Різне

?perlbook(1) : Інформація про книжки про Perl

?perltodo(1) : Що необхідно доробити

?perldoc(1) : Перегляд Perl-документації у форматі Pod

?perlhist(1) : Історія розвитку мови Perl

perldelta(1) : Зміни щодо попередніх версій Perl

perl586delta(1) : Зміни Perl, введені версією 5.8.6

perl585delta(1) : Зміни Perl, введені версією 5.8.5

perl584delta(1) : Зміни Perl, введені версією 5.8.4

perl583delta(1) : Зміни Perl, введені версією 5.8.3

perl582delta(1) : Зміни Perl, введені версією 5.8.2

perl581delta(1) : Зміни Perl, введені версією 5.8.1

perl58delta(1) : Зміни Perl, введені версією 5.8.0

perl573delta(1) : Зміни Perl, введені версією 5.7.3

perl572delta(1) : Зміни Perl, введені версією 5.7.2

perl571delta(1) : Зміни Perl, введені версією 5.7.1

perl570delta(1) : Зміни Perl, введені версією 5.7.0

perl561delta(1) : Зміни Perl, введені версією 5.6.1

perl56delta(1) : Зміни Perl, введені версією 5.6

perl5005delta(1) : Зміни Perl, введені версією 5.005

perl5004delta(1) : Зміни Perl, введені версією 5.004

?perlartistic(1) : Артистична ліцензія Perl

?perlgpl(1) : Ліцензія GPL

Особливості певних мов

?perlcn(1) : Perl для спрощеної китайської (EUC-CN)

?perljp(1) : Perl для японської мови (EUC-JP)

?perlko(1) : Perl для корейської мови (EUC-KR)

?perltw(1) : Perl для традиційної китайської мови (Big5)

Особливості певних платформ

?perlaix(1) : Замітки щодо AIX

?perlamiga(1) : Замітки щодо AmigaOS

?perlapollo(1) : Замітки щодо Apollo DomainOS

?perlbeos(1) : Замітки щодо BeOS

?perlbs2000(1) : Замітки щодо POSIX-BC BS2000

?perlce(1) : Замітки щодо WinCE

?perlcygwin(1) : Замітки щодо Cygwin

?perldgux(1) : Замітки щодо DG/UX

?perldos(1) : Замітки щодо DOS

?perlepoc(1) : Замітки щодо EPOC

?perlfreebsd(1) : Замітки щодо FreeBSD

?perlhpux(1) : Замітки щодо HP-UX

?perlhurd(1) : Замітки щодо Hurd

?perlirix(1) : Замітки щодо Irix

?perlmachten(1) : Замітки щодо Power MachTen

?perlmacos(1) : Замітки щодо Mac OS (Classic)

?perlmacosx(1) : Замітки щодо Mac OS X

?perlmint(1) : Замітки щодо MiNT

?perlmpeix(1) : Замітки щодо MPE/iX

?perlnetware(1) : Замітки щодо NetWare

?perlopenbsd(1) : Замітки щодо OpenBSD

?perlos2(1) : Замітки щодо OS/2

?perlos390(1) : Замітки щодо OS/390

?perlos400(1) : Замітки щодо OS/400

?perlplan9(1) : Замітки щодо Plan 9

?perlqnx(1) : Замітки щодо QNX

?perlsolaris(1) : Замітки щодо Solaris

?perltru64(1) : Замітки щодо Tru64

?perluts(1) : Замітки щодо UTS

?perlvmesa(1) : Замітки щодо VM/ESA

?perlvms(1) : Замітки щодо VMS

?perlvos(1) : Замітки щодо Stratus VOS

?perlwin32(1) : Замітки щодо Windows

Типово, вищевказані сторінки посібника інстальовано в каталозі /usr/local/man/.

Існує також обширна документація модулів Perl. Стандартна конфігурація perl інсталює додакову документацію до каталогу /usr/local/lib/perl5/man (або деінде в підтеці man бібліотечного каталогу Perl). Певна частина цієї документації розповсюджується стандартно разом із Perl, але ви тако знайдете там документацію сторонніх постачальників модулів.

Ви повинні мати змогу переглядати вашу Perl-документацію за допомогою програми man(1), шляхом включення назв відповідних каталогів до конфігураційних файлів, або змінної середовища MANPATH. Щоб дізнатися, де встановлено сторінки посібника Perl, введіть команду

       perl -V:man.dir

Якщо каталоги мають спільний стовбур, як от /usr/local/man/man1 і /usr/local/man/man3, вам потрібно тільки додати назву стовбура (/usr/local/man) до файлів конфігурації man(1) або змінної MANPATH. Якщо ж стовбур відрізняється, вам доведеться додати обидва стовбури.

У випадку, якщо це з якоїсь причини не працює, ви можете скористатися з наданого скрипту ?perldoc(1) для перегляду інформації про модулі. В такому разі, вам напевне слід оновити програму man.

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

Опис

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

Perl поєднує (принаймні, так гадає автор) деякі з найкращих рис C, sed, awk і sh, тож ті хто знайомий з цими мовами не повинен зазнати труднощів із Perl. (Історики мов також можуть віднайти певні ознаки csh, Pascal, або навіть BASIC-PLUS.) Синтаксис виразів близько відповідає сиснтаксису виразів C. На відміну від більшості знаряддь Юнікса, Perl не обмежує розмір ваших даних - якщо достатньо пам'яті, Perl завантажить цілий файл як один ланцюжок. Глибина рекурсії також не має обмежень. Таблиці, використовувані гешами, (іноді їх називають "асоціативними масивами") зростають по мірі необхідності, щоб запобігти погіршенню ефективності. Perl в змозі використовувати витончену техніку порівнювання зі зразками регулярних виразів для швидкого сканування великої кількості даних. Хоч і оптимізований для тексту, Perl може так само обробляти бінарні дані, та надавати dbm-файлам вигляд гешів. Perl-скрипти зі встановленим бітом setuid безпечніші за аналогічні C-програми, завдяки механізму слідкування за потоком даних, що запобігає безглуздим діркам у захисті.

Якщо ви маєте задачу, яка за звичайних обставин використала би sed, awk або sh, але перевищує можливості даних програм або оболонок, і повинна працювати трохи швидше, але у вас немає бажання переписати цю дурненьку річ у C, тоді Perl може виявитися саме для вас. Існують також транслятори, що перетворять скрипти sed або awk у Perl.

Але зачекайте, більше того...

Розпочатий у 1993-у році (дивіться ?perlhist(1)), Perl 5-ї версії, це фактично повний перепис наново, що передбачає наступні корисні риси: .IP o Модулярність і можливість багаторазового використання завдяки багаточисельним модулям. (Опис можна знайти в ?perlmod(1), ?perlmodlib(1) і ?perlmodinstall(1).) .IP o Інтеграційність та можливість розширень. (Опис можна знайти в ?perlembed(1), ?perlxstut(1), ?perlxs(1), ?perlcall(1), ?perlguts(1) і ?xsubpp(1).) .IP o Можливість стоврення власних "магічних" змінних (включаючи багатократні одночасні втілення DBM). (Описано в ?perltie(1) та AnyDBM_File(1).) .IP o Функції тепер можна переважити іншими, автоматично завантажити та забезпечити прототипом. (Описано в ?perlsub(1).) .IP o Довільно-гніздован іструктури даних і анонімні функції. (Опис можна знайти в ?perlreftut(1), ?perlref(1), ?perldsc(1) і ?perllol(1).) .IP o Об'єкто-зорієнтоване програмування. (Описано в ?perlobj(1), ?perlboot(1), ?perltoot(1), ?perltooc(1) і ?perlbot(1).) .IP o Підтримка поверхових (легких) процесів (програмних каналів). (Описано в ?perlthrtut(1) і ?threads(1).) .IP o Підтримка Юнікоду, інтернаціоналізації та локалізації. (Описано в ?perluniintro(1), ?perllocale(1) і Locale::Maketext(1).) .IP o Лексична зона дії. (Описано в ?perlsub(1).) .IP o Вдосконалення регулярних виразів. (Описано в perlre(1), з додатковими прикладами в ?perlop(1).) .IP o Вдосконалений зневаджувач й інтерактивне середовище Perl, із підтримкою вбудованого редактору. (Описано в ?perldebtut(1), ?perldebug(1) і ?perldebguts(1).) .IP o Бібліотека сумісності з POSIX 1003.1. (Описано в POSIX(3).)

Гаразд, досить вихвалятися.

Наявність

Perl доступний для більшості операційних систем, включаючи практично всі Юнікс-подібні платформи. Дивіться "Підтримувані платформи".

Середовище

Дивіться ?perlrun(1).

Автор

Larry Wall larry@wall.org із допомогою когорти іншого люду.

Якщо ви хочете поділитися розповідями про ваші успіхи завдяки Perl, що може допомогти іншим, які обстоюють використання Perl в їйніх додатках, або якщо ви просто хочете виразити свою вдячність Larry й іншим розробникам Perl, пишіть будь ласка за адресою perl-thanks@perl.org.

Файли

"@INC" : місцезнаходження бібліотек Perl

Дивіться також

?a2p(1) : - перекладач із awk до perl

?s2p(1) : - перекладач із sed до perl

http://www.perl.org/: майданчик Perl

http://www.perl.com/: статті по Perl (Мережа O'Reilly)

http://www.cpan.org/: архів Perl (the Comprehensive Perl Archive)

http://www.pm.org/: майданчик користувачів Perl (the Perl Mongers)

Діагностика

Вказівка "use warnings" (або прапорець -w) спричинять до докладних попереджень у випадку якихось помилок.

Дивіться ?perldiag(1) для роз'яснення всіх діагностичних повідомлень Perl. Вказівка "use diagnostics" автоматично увімкне довшу форму, звичайно стилих повідомлень.

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

На скрипти зі встановленим бітом setuid накладаються додаткові обмеження, які можуть спричинити до повідомлень на зразок "Insecure dependency" (небезпечна залежність). Дивіться ?perlsec(1) у такому випадку.

Чи згадували ми, що вам конче слід розглянути використання прапорця -w?

Вади

Прапорець -w необов'язковий.

Perl цілком підвладний визначенню вашою машиною таких операцій як зведення типів, atof(), і виводу чисел з плаваючою точкою за допомогою sprintf().

Якщо стандартні операції вводу/виводу вимагають виклику seek або eof між читанням та записом певного потоку, те саме вимагатиме Perl. (Це не стосується sysread() та syswrite().)

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

Ви можете відіслати повідомлення про вади (впевніться тільки, що включили повну конфігураційну інформацію, у тому вигляді, в якому її буде виведено програмою myconfig у вихідному коді perl, або командою "perl -V") на perlbug@perl.org. Якщо вам вдалося компілювати perl, тоді можете скористатися зі скрипту perlbug з каталогу utils/, який допоможе у відсиланні повідомлення.

Perl, насправді означає Pathologically Eclectic Rubbish Lister, але не кажіть нікому, що я це сказав.

Примітки

Девізом Perl є "There's more than one way to do it" (Існує більш ніж один спосіб щось зробити). Поділ на скільки ще способів існує, ми залишимо як впаву читачеві.

Три основних чесноти програміста, це Лінь, Нетерплячість і Пиха. Дивіться &"Верблюжу книжку" ("Programming Perl", третє видання, автор Larry Wall), щоб дізнатися, чому саме.

Переклав українською Віталій Цибуляк.