Основи Perl: інтенсивний курс для розробників CGI

1

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

Він добре справляється із двома завданнями. По-перше, він замінює пакетні файли DOS та скрипти C shell. По-друге, він забезпечує роботу веб-серверів. Саме цей контекст має значення зараз.

Гарна новина? Вихідний код є безкоштовним. Розробники віддають його безкоштовно. Ви можете завантажити тисячі скриптів. Ви можете їх вивчати. Ви можете ламати їх.

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

Цей посібник передбачає, що ви вже вмієте програмувати. Якщо ви знаєте C, ви попереду. Якщо ні, почніть тут. Ми пропускаємо філософію. Ми переходимо до синтаксису.

Запуск інтерпретатора

Вам потрібний інтерпретатор Perl.

Якщо ви використовуєте UNIX, він, ймовірно, вже встановлено. Шанс 99,99%. Перевірте термінал.

Якщо ви використовуєте Windows або Mac, перейдіть на офіційний сайт. Завантажте останню версію. Встановіть її. Perl є безкоштовним. Він має відкритий вихідний код. Він існує з 1987 року. Не ускладнюйте процес встановлення.

Після встановлення знайдіть каталог DOCS. Він входить у комплект постачання. Перегляньте його. Поки що не читайте кожне слово. Воно щільне. Воно сухе. Але воно точне. Воно знадобиться вам пізніше, коли основи перестануть мати сенс.

Ваш перший скрипт

Налаштуйте шлях. Додайте виконуваний файл Perl. Відкрийте текстовий редактор. Створіть файл на ім’я test1.pl.

Напишіть це:

`perl
print "Hello World!\n";
bash
perl test1.pl

Два рядки. Одна команда.

Чому це спрацювало? Через подвійні лапки. У Perl подвійні лапки запускають інтерпретацію лапок. Він обробляє керуючі послідовності.

Використовувати одинарні лапки?

`perl
print 'Hello\nWorld!\n';

Це запускає команду операційної системи. Виведення друкується на екрані. У Windows cmd /c необхідний. dir не є файлом, що виконується. Це вбудована команда командного інтерпретатора.

Якщо ви спробуєте print 'dir'; у Windows NT, це не спрацює. Вам потрібна оболонка.

Зверніть увагу на символ /. Він використовується для регулярних виразів. Ви побачите його всюди.

print приймає коми як роздільники:

`perl
print 'hello', "\n", 'world!';

Крапка з’єднує рядки. Кома поділяє аргументи.

Програмісти на C сподобається printf. Він працює так само, як у C.

Змінні та типи даних

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

Завжди використовуйте символ $.

`perl
$s = "Hello\nWorld\n";
$t = 'Hello\nWorld\n';
print $s, "\n", $t;

\ t – це табуляція. Perl обробляє її.

Конкатенація рядків використовує точку:

`perl
$a = "Hello";
$b = "World\n";
$c = $a. $b;
print $c;

Масиви

Масиви починаються з @.

`perl
@a = ('cat', 'dog', 'eel');
print @a, "\n";
print $#a, "\n"; # Максимальний індекс
print $a[0], "\n";
print $a[0], $a[1], $a[2], \n;

‘bar’ пов’язане з ‘dog’. ‘meow’ з ‘cat’.

Існує чистіший синтаксис. Оператор =>.

`perl
%h = (dog => 'bark', cat => 'meow', eel => 'zap');

Ви також можете використовувати оператори while для більш простих ітерацій. Тут змінна збільшується всередині блоку:

`perl
$i = 0;
while ($ i < 10) { print $i, "\n"; $i++; }

Тут $b приймає значення 'dog', потім 'cat', потім 'eel'. Цикл закінчується, коли масив @a вичерпаний.

Правило фігурних дужок

У Perl є одне непорушне правило синтаксису: фігурні дужки.

Ви повинні використовувати { та } для обертання блоків коду, навіть якщо блок містить лише один рядок.

`perl
if ($i! = 5) { print $i, "\n"; }

Змінна $#_ повертає максимальний індекс масиву @_. Оскільки масиви мають нульову індексацію, це дає кількість параметрів мінус один.

Це трохи заплутано, але якщо звикнути, це ефективно.

Області видимості змінних і значення, що повертаються

Щоб не засмічувати глобальний простір імен всередині функції, оголошуйте локальні змінні за допомогою ключового слова local.

`perl
sub xxx {
local ($a, $b, $c) ...
}

Технічно & потрібно лише у разі неоднозначності для парсера. Але багато розробників використовують його за звичкою для явності.

Щоб надіслати результат назад коду, що викликає, використовуйте ключове слово return.

Введення та виведення

Читання стандартного потоку введення (STDIN ) є простим. Оператор кутових дужок читає дані рядково.

``perl
print "Enter high number:";
$i = ;

for ($j = 0; $j <= $i; $j++) { print $j, "\n"; } `

Або використовуйте функцію read, яка вказує довжину даних, що вводяться для захоплення.

`perl
read(STDIN, $i, 1);

Якщо вам потрібно отримати доступ до аргументів командного рядка, перегляньте масив @ARGV.

  • $ARGV[0] - перший аргумент.
  • $ARGV[1] - другий аргумент.
  • $#ARGV дає індекс останнього аргументу (кількість мінус один).

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

Чи актуальний Perl сьогодні?

Це справедливе питання. Чи використовують програмісти Perl досі? Так.

Чи використовується Perl у 2024 році? Так, хоч його роль змінилася. Це високорівнева, загального призначення, інтерпретована, динамічна мова. Він не домінує в нових проектах розробки веб-застосунків так, як це роблять Python або Node.js.

Однак Perl залишається потужним інструментом для системного адміністрування та підтримки успадкованого коду. Він чудово справляється з обробкою тексту та швидким написанням скриптів.