Perl

  1. перші версії правити
  2. Ранній Perl 5 правити
  3. C 2000 по наш час правити
  4. Perl 6 правити
  5. Особливості правити
  6. Синтаксис мови Perl правити
  7. приклад програми правити
  8. типи даних правити
  9. Скаляр правити
  10. масив правити
  11. Хеш-таблиця правити
  12. функція правити
  13. Запис таблиці символів правити
  14. Регулярні вирази правити
  15. Програми з одного рядка правити
  16. Мови програмування і оболонки зі схожими технологіями правити
Perl семантика:

мультіпарадігменний : імперативний , об'єктно-орієнтована , функціональний

Тип виконання:

інтерпретатор

З'явився в:

1987 р

Автор (и):

Ларрі Уолл

розширення файлів:

.pl, .pm, .cgi

реліз :

5.12.2 [1 ] / 7 вересня 2010

Тестова версія:

5.13.4 [2 ] / 20 серпня 2010

типізації :

динамічна

Під впливом від:

Сі , AWK , Shell , Sed , Лисп

Чи вплинула на:

Рубі , Python , PHP

Perl - високорівнева інтерпретується динамічний мову программірованіяобщего призначення, созданнийЛаррі Уоллом, лінгвістом за освітою. Назва мови є абревіатурою, що розшифровується як Practical Extraction and Report Language «практичну мову для отримання даних та складання звітів». Спочатку абревіатура складалася з п'яти символів і в такому вигляді в точності збігалася з англійським словом pearl, перлина. Але потім стало відомо, що така мова існує (див. PEARL) і букву «а» прибрали. Талісманом мови Perl являетсяверблюд- не дуже гарне, але дуже винослівоежівотное, здатне виконувати важку роботу.

Основною особливістю мови вважаються його багаті можливості для роботи з текстом, в тому числі реалізовані за допомогою регулярних виразів. Перл успадкував багато властивостей від язиковСі, shell script, awk.

Perl також знаменитий величезною коллекціейдополнітельних модулейCPAN, що знаходиться за адресою http://www.cpan.org (Англ.).

перші версії правити

Ларрі Уолл почав розробку Perl в 1987 році, коли працював програмістом в Unisys [1] . Версія 1.0 була випущена і анонсована в новинній групі comp.sources.misc 18 грудня 1987. [2] як «" заміна "для awk і sed ».

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

Спочатку, єдиною документацією для Perl була єдина (величезної довжини) man -сторінка. У 1991 році була випущена до книга Programming Perl (відома багатьма програмістами як « верблюжа книга »( Шаблон: Lang-en ) Через зображення на обкладинці), яка, де-факто , Стала стандартом мови. У той же самий час, версія мови була піднята до 4, не так, щоб вказати на значні зміни, скільки, щоб позначити, що ця версія мови документована книгою.

Ранній Perl 5 правити

Perl 4 пройшов через серію релізів, зупинившись на Perl 4.036 в 1993 році. У цей момент, Ларрі Уолл закинув Perl 4 і почав роботу над Perl 5. Розробка Perl 5 було розпочато в 1994 році. У той же час був створений список розсилки perl5-porters для координації роботи над портированием Perl 5 на різні платформи. Він до цих пір залишається основним форумом з розробки, обслуговування та портированию Perl 5. [3]

Perl 5.000 був випущено 17 жовтня 1994 року. [4] Він включав в себе повністю переписаний інтерпретатор , І включав в себе багато нових мовних можливостей, таких як об'єкти , посилання , Локальні (my) змінні , І модулі . Особливо важливою частиною були модулі, так як вони надали механізм розширення мови без модифікування інтерпретатора. Це дозволило стабілізувати інтерпретатор, але при цьому, дало можливість звичайним Perl-програмістам додавати в мову нові можливості. Perl 5 знаходиться в активній розробці донині.

Perl 5.001 був випущений 13 березня 1995 року. Perl 5.002 побачив світ 29 лютого 1996 року зі нової підтримкою прототипів. Це дозволило авторам модулів створювати функції, які вели себе так само, як і вбудовані функції Perl. Версія Perl 5.003 з'явилася 25 червня 1996 і усувала котрі виникли проблеми з безпекою.

Одне з найважливіших подій в історії Perl 5 трапилося за межами власне мови і було наслідком підтримки модулів. 26 жовтня 1995 року розпочала свою роботу CPAN (Всеосяжна Мережа архівів Перл), яка стала репозиторієм модулів Perl , А також вихідного коду самої мови. На даний момент мережа налічує понад 20000 модулів, створених більш ніж 8000 програмістами. [5]

Perl 5.004 був випущений 15 травня 1997 року і містив, крім усього іншого, пакет UNIVERSAL, який давав мови основний об'єкт, від якого автоматично відбувалися всі класи. Була також включена можливість запитувати версію модулів. У доповненні до цього Perl став підтримувати Microsoft Windows, а також ряд інших операційних систем. [6]

Perl 5.005 побачив світ 22 червня 1998 року. Цей реліз включав в себе кілька поліпшень процесора регулярних виразів, нові перехоплення в бекенд за допомогою B :: * модулів, qr // оператор лапок для регулярних виразів, великий вибір інших нових модулів, а також підтримку ряду операційних систем, зокрема BeOs . [7]

C 2000 по наш час правити

Perl 5.6 був випущений 22 березня 2000 року. Головні зміни включали підтримку 64-бітових систем, уявлення рядків в стандарті юнікод, підтримку великих файлів (файли більше 2 Гб) і ключове слово «our». [8] [9] Під час розробки Perl 5.6 було прийнято рішення змінити схему найменування версій на ближчу до інших проектів з відкритим вихідним кодом. За версією 5.005_63 слідувала версія 5.5.640, згідно з планом версіями в розробці повинні були прісваіватся непарні номери, стабільним версіями - парні.

У 2000 році Ларрі Уолл виступив із закликом до товариства активно обговорювати пропозиції до наступної версії Perl. Результатом цього обговорення стало 361 документ RFC (Запит коментарів), які були використані в розробці Perl 6 . У 2001 році [10] було розпочато роботу над фінальним документом, що підводить підсумок пропозицій до створення нового покоління Perl. Результат був представлений не у вигляді формального документа, а в якості дайджесту всіх RFC. До цього часу Perl 6 існував виключно у вигляді опису мови.

Perl 5.8 був вперше випущений 18 липня 2002 року і з цього моменту отримував щорічне оновлення. Остання версія Perl 5.8 - 5.8.9 побачила світ 14 грудня 2008 року. Perl 5.8 поліпшував підтримку юникода, додавав нову реалізацію введення / виведення, додавав підтримку багатопоточності, збільшував числову точність і додавав кілька нових модулів. [11]

У 2004 році почалася робота над Cінопсісом (Synopsis) - спочатку задумався як ряд документів, що підводять підсумки фінального документа, згадуваного вище. Однак поступово цей ряд документів і став специфікацією Perl 6. У лютому 2005 року Audrey Tang почав роботу над Pugs [12] , Інтерпретатором Perl 6 , Написаному на Haskell . [13] Це було першою цієї спробою втілити Perl 6 в реальність. Ця спроба заглохла в 2006 році.

18 грудня 2007 року, в день 20-ої річниці Perl 1.0, була випущена версія Perl 5.10.0. Ця версія містила в собі ряд помітних нововведень, які наближують її до Perl 6 . Одними з таких нововведень стали нові оператори switch (названих «given» / «when»), оновлення регулярних виразів, а також «розумний» оператор збіги «~~». [14] [15]

Приблизно в цей же час всерйоз почалася розробка нової імплементації Perl 6, вапном як Rakudo Perl [16] , Розробленої в тандемі з віртуальною машиною Parrot . C листопада 2009 Rakudo Perl регулярно оновлюється щомісяця і є на даний момент найповнішою імплементацією Perl 6 .

Значна зміна процесу розробки Perl 5 стався після появи Perl 5.11. Спільнота розробників перейшло на щомісячний цикл релізів, з плануванням дати релізу на три місяці вперед.

12 квітня 2010 року Perl 5.12.0 був представлений публіці. Видатні нововведення включають в себе підтримку нового синтаксису package NAME VERSION, оператор Yada Yada (службовця для маркування коду-заповнювач, який ще не реалізовано), повне рішення пробеми 2038 року (Y2038), перевантаження операторів регулярних виразів, підтримку DTrace (фреймворка динамічного трасування), а також повну підтримку стандарту Unicode 5.2. [17] 7 вересня 2010 року Perl 5.12.2 був випущений. Цей реліз містить оновлення модулів, а також деякі зміни в документації. [18]

Остання версія, випущена 20 серпня 2010 року - Perl 5.13.4. [19]

Perl 6 правити

Шаблон: Основна стаття З 2000 року йде розробка нової (6-ий) версії мови. На відміну від попередніх версій, розробники планують створити чітко визначений стандарт мови. В даний час існують експериментальні компілятори Perl 6 , Але триває подальша дискусія про нові правила. На російській мові інформація про нову версію мови доступна на сайті http://perl6.ru/ .

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

Мова можна охарактеризувати скоріше як практичний (легкість у використанні, ефективність, повнота), ніж гарний (елегантність, мінімалістичний). [20] Головними перевагами мови є підтримка різних парадигм ( процедурний , Об'єктно-орієнтована і функціональний стилі програмування), контроль за пам'яттю (без колектора сміття, заснованого на циклах), вбудована підтримка обробки тексту, а також велика колекція модулів сторонніх розробників.

Згідно Ларрі Уолл , У Perl є два девізу. Перший - «Є більше одного способу це зробити» ( «There's more than one way to do it »), відомий також під абревіатурою TMTOWTDI . Другий слоган - «Прості речі повинні залишатися простими, а складні стати здійсненними» ( «Easy things should be easy and hard things should be possible »).

Особливості правити

Загальна структура Perl в загальних рисах веде свій початок від мови Сі . Perl - процедуральних за своєю природою, має змінні , Вирази, привласнення , Блоки коду, відокремлювані фігурними дужками , Керуючі структури і функції .

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

Perl запозичує масиви з Lisp , Регулярні вирази з AWK і sed , З AWK також запозичені хеші ( «Асоціативні масиви»). Регулярні вирази полегшують виконання багатьох завдань по парсингу, обробці тексту та маніпуляцій з даними.

Perl 5 додав підтримку складних типів даних, першокласних функцій ( замикання як значення) і об'єктну модель. В останню входять посилання , Пакети, виконання методів від класу, змінні з лексичним оголошенням області видимості , А також директиви компілятору (нампрімер, strict). Найголовнішим удосконаленням представленим в Perl 5 стала можливість поміщати код в «пакети» (package) в якості модулів для повторного використання. Ларрі Уолл пізніше зауважив, що «Весь задум модульної системи Perl 5 зводився до заохочення зростання культури Perl, а не рядків коду». [21]

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

Синтаксис мови Perl правити

Синтаксис Perl має багато спільного з синтаксисом мов Сі , Awk , sed і shell .

Перший рядок вихідного коду може починатися з «#! / Шлях / к / Perl [-ключі]» - що вказує системі шлях до інтерпретатора Perl для виконання програми в UNIX системах і виконання їх на веб-сервері . Спочатку обробка такого рядка - це функція shell , Але Perl при виконанні програми також перевіряє цей рядок і читає з неї ключі, ігноруючи шлях до інтерпретатора.

приклад програми правити

Найпростіша програма Hello world виглядає наступним чином:

або для CGI :

#! / Usr / bin / perl print "Content-type: text / html \ n \ n"; print "Hello, world!" ;

Дозапис в рядок.

$ X = 5; $ X. = 0; print $ x; # 50

А ось так можна надрукувати число гугол .

типи даних правити

Основні типи даних: скаляр , масив , Хеш-таблиця , функція , вказівка на файл , запис таблиці символів . Змінні різних типів відрізняються знаком, який стоїть перед ім'ям змінної:

Тип Символ Приклад Опис Скаляр $ $ Foo едініченое значення; може бути числом, рядком , Зазначенням на файл, а так же посиланням . масив @ @Foo Упорядкована колекція скалярів. Хеш-таблиця %% Foo Колекція з пар рядок-скаляр; рядки називаються ключами, а скаляри - значеннями. Синонім - Асоціативний масив . Вказівка на файл немає $ foo або FOO Подання відкритого файлу або іншої мети, відкритої для читання і / або запису. функція & & Foo Відрізок коду, який приймає аргументи, виконує дії і повертає значення. Запис таблиці символів * * Foo Запис таблиці символів для всіх типів з ім'ям 'foo'.

Скаляр правити

$ X = 10; # Число $ y = $ x + 1; # Використовуємо $ x як число ... $ z = $ x. 'String'; # ... а тепер - як рядок $ ref = \ $ x; # $ Ref є покажчиком на $ x $$ ref = 0; # $ X містить значення 0

Строкові дані повинні бути поміщені в лапки. Perl використовує два види лапок - одиночні і подвійні. Приміщення рядки в подвійні лапки дозволяє значенням змінних, що містяться в рядку, автоматично замінити собою назву змінних. Висновок сторокой в ​​поодинокі лапки запобігає така поведінка:

## Приклад інтерполяції змінних в подвійних лапках $ pi = 3.141592654; $ Var1 = 'Значення Pi - $ pi \ n'; print $ var; # Значення Pi - $ pi \ n $ var 2 = "Значення Pi - $ pi \ n"; print $ var; # Значення Pi - 3.141592654

Для включення подвійних лапок в рядок, яка була поміщена в подвійні лапки, слід використовувати скасування знака - \ ". Для включення одинарних лапок в рядок з ординарних лапок - \ '. Для зручності роботи з рядками містять багато знаків лапок всередині, Perl дозволяє використовувати альтернативні способи закавичіванія. альтернативна форма використовує будь-яку пару знаків, поміщених після букви q (імітує поведінку одинарних лапок) або qq (імітує поведінку подвійних лапок):

## Приклад використання альтернативних лапок $ pi = 3.141592654; $ Link1 = q {<a href = "http://ru.wikipedia.org/wiki/Pi"> $ pi </ a>}; print $ link1; # <a href="http://ru.wikipedia.org/wiki/Pi"> $ pi </a> $ link2 = qq {<a href = "http://ru.wikipedia.org/wiki/Pi "> $ pi </ a>}; print $ link2; # <a href="http://ru.wikipedia.org/wiki/Pi"> 3.141592654 </a>

Ще один тип лапок в Perl - зворотні лапки. У них містяться програми операційної системи, висновок яких може бути переданий інтерпретатора Perl. Виконання програм завжди закінчуються символом нового рядка - \ n:

## Приклад використання зворотних лапок для виконання команд UNIX $ space = `du -s -k / usr / local / bin`; print $ space; # 6264 / usr / local / bin $ sysuptime = `uptime`; print $ sysuptime; # 2:24 up 1 day, 9:05, 1 user, load averages: 0.26 0.32 0.33

масив правити

@array = (1, 2, 3, 4); # Записали в масив @array чотири елементи print $ array [2]; # Надрукувати третій елемент print @array [2, 3]; # Надрукувати третій і четвертий елемент. # Тут використовується @, так як результат операції зрізу масиву теж є масивом.

Хеш-таблиця правити

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

% Hash = ( 'cat' => 'kitten', # тут => - це так кличуть входити «довга кома", "dog '=>' puppy ', # в цьом прікладі по Функції Повністю аналогічна звічайної", "." Cow '=>' calf '); print $ hash { 'cat'}; # Надрукувати kitten print join ( "-", keys% hash); # Висновок всех ключів. Надрукує cat-dog-cow print join ( "-", values% hash); # Висновок всех значень. Надрукує kitten-puppy-calf print join ( "-",% hash); # Надрукувати cat-kitten-cow-calf-dog-puppy, так як в спискові контексті хеш автоматично # розгортається в список (ключ, значення). Так як ключі в хеше НЕ сортуються, # парі КОЖЕН раз будут Виводити в довільному порядку.

функція правити

  • Функція представляет собою фрагмент коду, что віконується. Функція всегда Повертає якесь значення. Если значення, что возвращается явно не вказано оператором return, возвращается останнім Обчислення значення. Если в Функції вікорістовується return без параметрів, то в залежності від контексту виклику Функції возвращается невизначенності значення undef, порожній список або Взагалі Нічого.
sub printTwo {print 2; } Sub three {3; } $ S = \ & three; print & $ s; # Надрукувати 3 $ s = \ & printTwo; # Запішемо в скаляр $ s посилання на агентство функцію - через це ПОСИЛАННЯ вона буде віклікана в Наступний рядками. print & $ s; # Надрукувати 21. `2` в коді функції, а` 1` як значення, що повертається функцією printTwo print & printTwo # Те ж саме

Константа правити

  • Константа являє собою незмінне значення. Константа не є вбудованим типом мови і емулюється за допомогою функцій. Переважно ставити константи за допомогою стандартного модуля constant, щоб в майбутньому не залежати від можливих змін в реалізації констант. Використання:
use constant MY => 2; print MY;

Запис таблиці символів правити

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

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

$ S = <STDIN>; # Читаємо один рядок з дескриптора STDIN (стандартний потік введення); скалярний контекст. @ Values ​​= <FILE>; # Читаємо всі рядки з деякого відкритого і пов'язаного з дескриптором FILE файлу; списковий контекст. print STDOUT $ s; # Друкуємо в STDOUT (стандартний потік виводу)

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

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

Регулярні вирази правити

Важливою частиною Perl є регулярні вирази . Завдяки цьому Perl добре підходить для обробки текстів. Велика частина роботи з регулярними виразами проводиться за допомогою операторів = ~, m // і s ///.

Оператор m // використовується для перевірки на збіг. У найпростішому випадку результат виразу $ x = ~ m / abc / буде істинним, якщо і тільки якщо рядок $ x буде відповідати регулярному виразу abc. например:

Приклад Значення Шаблон: Nobr Рядок $ x містить (під) рядок «abc». Початкова буква «m» оператора при використанні // може бути опущена. Шаблон: Nobr Рядок $ x містить букву «a», потім від одного до трьох будь-яких символів, і потім букву «c». Знайдені символи будуть збережені в змінну $ 1. Шаблон: Nobr Рядок $ x строго дорівнює «perl» або «pugs» без урахування регістру. Так само, замість // регулярний вираз оточене в {}.


Пошук і заміна виконуються за допомогою оператора s ///. Конструкція $ x = ~ s / abc / def /; замінить перше входження регулярного вираження abc на рядок def.

Приклад Значення
Шаблон: Nobr Всі входження (на що вказує прапор / g - global) підрядка «abc» в $ x будуть замінені на «def». Шаблон: Nobr Перше входження в $ x літери «a», потім від одного до трьох будь-яких символів, і потім букви «c» буде замінено на ці символи між «a» і «c», оточені «!». Наприклад, «syntactic» стане «synt! Cti!». Шаблон: Nobr Тут показаний приклад використання модифікатора / e, що вказує на те, що замість рядка заміни буде написаний код, результат виконання якого треба використовувати. Всі входження «perl» або «pugs» в будь-якому регістрі будуть замінені на «Perl» і «Pugs», відповідно.

Регулярні вирази Perl настільки популярні, що вони включені безпосередньо в інші мови, такі як PHP і JavaScript , А також існують спільні бібліотеки, реалізують використання виразів в компільованих мовах.

Програми з одного рядка правити

Цікавою і часто респонденти користуються послугами можливістю Perl є так звані one-liners - програми з одного рядка, зазвичай задаються прямо в рядку виклику інтерпретатора за допомогою ключа -e.

Ця програма надрукує прості числа :

perl - wle "(1 x $ _)! ~ / ^ (11+) \ 1 + $ / && print while ++ $ _"

Цей приклад надрукує тільки унікальні рядки файлу file, ключ -n автоматично загортає рядок обробки в цикл, який проходить по всіх рядках в файлах, зазначених після тексту програми:

perl - ne '$ s {$ _} ++ || print 'file

У цих прикладах Perl нагадує своєю стислістю і незрозумілістю з першого погляду мову J .

Також одним з таких прикладів є яка викликала великий резонанс програма, Шаблон: Ні АІ так як насправді вона є замаскованою командою рекурсивного видалення всіх файлів, право на видалення яких є у поточного користувача:

echo "test ... test ... test ...&quot; | perl - e '$ ?? s:; s: s ;; $? :: s ;; =] =>% - {<- |} <& | `{;; y; - /: - @ [- `{-};` - {/ "- ;; s ;; $ _; see '

echo "test ... test ... test ..." виконання цієї команди не впливає на роботу і додано, швидше за все, для усипляння пильності. Те що відбувається в іншому коді - зовсім не очевидно через навмисно заплутаного написання. У даній сходинці записано всього три послідовно виконуваних команди. Запишемо команду в такий спосіб:

$? ? s:; s: s ;; $? :: S ;; =] =>% - {<- | } <& | `{; ; y; - /: - @ [- `{-}; `- {/" -;; s ;; $ _; see

Перша конструкція аналізує змінну $? - код повернення попередньої команди. Так як перед виконанням цієї конструкції дочірніх процесів не створювалося, $? буде містити 0, і виконана буде друга «гілка» - s ;; =] =>% - {<- |} <& | `{;. Ця команда, в свою чергу, замінює рядок у змінній-акумуляторі $ _ на =] =>% - {<- |} <& | `{(перший символ після s встановлює обмежувач параметрів цього оператора, і хоча традиційно використовуються слеш '/ 'або' | ', для неясності в цій конструкції використовується обмежувач'; ').

Друга команда транслює вміст «акумулятора» по досить складним правилам. У лівій частині зазначено чотири діапазони символів, в правій - один. Якщо розкрити ці діапазони, отримаємо наступне відповідність:

! "# $% & '() * +, -. / :; &lt;=>? @ [\] ^ _` {|}` abcdefghijklmnopqrstuvwxyz {/ "-

В результаті вміст $ _ набирає вигляду

Третя ж команда двічі (як інструктує прапор ee) «обчислює» вміст акумулятора - вищевказану деструктивну команду - і намагається замінити порожній рядок в акумуляторі на результат обчислення.

Мови програмування і оболонки зі схожими технологіями правити

Perl - далеко не єдина мова, що дає великі можливості в обробці тексту. Мови програмування РЕФАЛ , Icon і Снобол надають можливість використовувати більш повно метод програмування «зіставлення зі зразком», окремим випадком якого і є регулярні вирази.

Існує також повноцінний shell , Який використовує в якості основи мову Perl. називається він psh і дає можливість змішувати команди звичайного шелла і самого Perl'а [22] .

На Perl можна навіть писати вірші. Одне з таких віршів під назвою «Black Perl» ( «Чорна перлина» або «Чорний перл») було згадано Ларрі Уоллом в першоквітневий листі в Usenet . Воно було написано спочатку для Perl 3, і за словами самого Ларрі, він відчув моральне задоволення, коли вірш не минуло синтаксичний аналізатор в Perl 5.

BEFOREHEAD: close door, each window & exit; wait until time. open spellbook, study, read (scan, select, tell us); write it, print the hex whole each watches, reverse its length, write again; kill spiders, pop them, chop, split, kill them. unlink arms, shift, wait & listen (listening, wait), sort the flock (then, warn the "goats" & kill the "sheep"); kill them, dump qualms, shift moralities, values ​​aside, each one; die sheep! die to reverse the system you accept (reject, respect); next step, kill next sacrifice, each sacrifice, wait, redo ritual until "all the spirits are pleased"; do it ( "as they say"). do it (* everyone ** * must ** * participate ** * in ** * forbidden ** s * e * x *). return last victim; package body; exit crypt (time, times & "half a time") & close it, select (quickly) & warn your next victim; AFTERWORDS: tell nobody, wait, wait until time; wait until next year, next decade; sleep, sleep, die yourself, die at last
Помилка цитування Для існуючого тега <ref>, не знайдено відповідного тега <references />
Quot; | perl - e '$ ?
S:; s: s ;; $?
S:; s: s ;; $?
Так як перед виконанням цієї конструкції дочірніх процесів не створювалося, $?
Lt;=>?

Дополнительная информация

rss
Карта