Підручник з Perl: змінна, масив, хеші з прикладом програмування

Що таке Perl?

Perl це інтерпретована динамічна мова програмування високого рівня загального призначення. Perl — це термін, що розшифровується як «практична мова вилучення та звітування», хоча для Perl немає акроніму. Він був представлений Ларрі Уоллом у 1987 році. Мова Perl була спеціально розроблена для редагування тексту. Але зараз він широко використовується для різноманітних цілей, включаючи системне адміністрування Linux, мережеве програмування, веб-розробку тощо.

Огляд мов програмування

Давайте скажемо це просто. Хоча комп’ютери розуміють лише 0 і 1 (двійкова мова/машинна мова/ [мова низького рівня]), нам, людям, дуже важко програмувати на двійковій мові. Perl — це мова програмування, яка використовує елементи природної мови, слова, які використовуються в поширеній англійській мові, і тому її легше зрозуміти людям [мова високого рівня]. Тепер є проблема; комп’ютери не можуть зрозуміти мови високого рівня, які ми, люди, легко розуміємо. Для цього нам потрібно щось, що може перекладати мову високого рівня на мову низького рівня. Тут нам на допомогу приходить перекладач. Інтерпретатор — це частина програмного забезпечення, яка перетворює програму, написану мовою високого рівня, на мову низького рівня, щоб комп’ютер розумів і виконував інструкції, написані в програмі. Отже, Perl є інтерпретована мова програмування.

Де використовується Perl?

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

Perl також можна використовувати для створення та обробки зображень. Окрім роботи в мережі через telnet, FTP тощо, створення графічного інтерфейсу користувача, електроніка VLSI та створення поштових фільтрів для зменшення спаму є деякими випадками використання Perl.

Perl також відомий впровадженням методів ООП (об’єктно-орієнтованого програмування) і підтримує всі форми успадкування (просте, множинне та діамантове), поліморфізм та інкапсуляцію. Perl є достатньо гнучким, щоб одночасно підтримувати процедурні та ООП-практики. Perl також має додаткові модулі, які дозволяють вам писати або використовувати/повторно використовувати написаний код Python, PHP, PDL, TCL, Octave, Java, C, C++, Basic, Ruby та Lua у вашому сценарії Perl. Це означає, що ви можете поєднувати Perl із цими додатками мови програмування скоріше переписування існуючого коду.

Застосування мови програмування Perl

Застосування мови програмування Perl

Навіщо використовувати Perl?

Це правда, що існують інші мови програмування, які можна використовувати для виконання всього вищезазначеного, тоді чому ви повинні використовувати саме Perl? Perl дуже легко вивчити, особливо якщо у вас є досвід комп’ютерного програмування. Perl був розроблений таким чином, щоб людям було легко писати та розуміти, а не полегшувати обробку комп’ютерами. Він використовує регулярні вирази. Природний стиль мови відрізняється від інших мов програмування, які використовують певну граматику та синтаксис; отже, Perl є дуже гнучким і не нав’язує вам жодного конкретного способу мислення щодо вирішення чи проблеми. Perl надзвичайно портативний. Він може працювати в будь-якій операційній системі, де встановлено інтерпретатор Perl, тому він не залежить від платформи. Всі Linux Operating Systems встановлюється разом із Perl, тож ви можете почати кодування Perl у Linux із коробки. Це на відміну від сценаріїв Shell, де код змінюється залежно від смаку дистрибутива Linux, який використовується, що робить його все менш і менш переносимим Невеликі конкретні завдання в Perl стають дуже легкими та швидкими. У цьому посібнику з Perl для початківців ви дізнаєтеся, як можна кодувати невеликі швидкі програми для конкретних завдань. Давайте візьмемо простий приклад класичної програми Hello World, яка використовується для початку вивчення будь-якої мови програмування, корінням якої є UNIX:

Приклад: Perl привіт світ

Простий приклад Perl

#!/usr/bin/perl
print "Hello, world!";

вихід:

Привіт Світ!

Наведені вище два рядки коду надрукують Hello, world! Чи не було це занадто просто і швидко? Студенти зі знанням C, C++ знатиме, що для отримання того самого виводу цими мовами потрібно набагато більше рядків коду.

Вам може бути цікаво, чому Perl дуже відомий в Інтернеті. Це просто, оскільки більшість речей, які відбуваються в Інтернеті, складаються з ТЕКСТУ, а Perl дуже добре справляється з обробкою тексту. Якщо ми порівнюємо Perl з будь-якою з мов, тоді Perl буде найкращою мовою, яка добре підходить для обробки файлів, обробки тексту та звітування про вихід

Однією з найкращих переваг Perl є те, що він є вільний у користуванні

Спільнота Perl твердо переконана, що програмне забезпечення повинно бути у вільному доступі, вільно модифікуватися та вільно розповсюджуватися. Кілька волонтерів із спільноти Perl прагнуть зробити мову програмування якомога кращою.

Переваги та недоліки Perl

Плюси: Мінуси:

Переваги Perl

Недоліки Perl

  • Порівняно з іншими мовами програмування Perl є найпотужнішим для обробки тексту та аналізу
  • Це інтерпретована мова зі швидким часом виконання, оскільки немає необхідності компілювати сценарій Perl
  • Простий і легкий для програмування та розуміння.
  • Він об'єктно-орієнтований.
  • Бібліотека CPAN полегшує розробку на Perl (ми дізнаємось про це далі в цій темі).
  • Використовується в веб-розробці переважно для платіжних шлюзів.
  • Використовується в автоматизації та для тестування більшості речей, пов’язаних із мережею та сховищами.
  • У порівнянні з іншими мовами програмування існує мінімальна підтримка GUI.
  • Вам потрібно звернутися до складних бібліотечних модулів, які не так легко зрозуміти (не лякайтеся, коли ви знаєте, як це робити, все буде легко).
  • Розуміння складних шаблонів вимагає досвіду.

Давайте розпочнемо

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

Завантажити та встановити Perl – Windows, Mac і Linux

Як отримати Perl?

Гарні новини мабуть у вас є!

Але якщо ви не можете знайти його у своїй системі, ви все одно можете отримати його безкоштовно.

Щоб дізнатися, чи у вас уже встановлено Perl, увійдіть у командний рядок і введіть: perl -v

Як завантажити Perl

Команда відобразить версію Perl, якщо її встановлено. У цьому випадку версія v5.14.2. Але якщо ні… не панікуйте…

ЮнексПідручник PERL для початківців - Повний посібник Вже встановлено Поставляється з попередньо встановленим Perl, хоча вам може знадобитися оновити його до останньої версії.
Mac OS Підручник PERL для початківців - Повний посібник Вже встановлено OSX постачається з попередньо встановленим Perl, хоча вам може знадобитися оновити його до останньої версії
WindowsПідручник PERL для початківців - Повний посібник Потрібно встановити Доступні два варіанти

  1. Strawberry Perl — це бінарний дистрибутив Perl з відкритим кодом для Windows ОС. Він містить компілятор і попередньо встановлені модулі, які пропонують можливість інсталювати модулі XS CPAN безпосередньо з CPAN
  2. ActiveState perl забезпечує двійковий розподіл Perl (для багатьох платформ), а також власний менеджер пакетів Perl (PPM)

Оновлення Perl на Linux:

Якщо вам потрібно оновити версію Perl, просто введіть один рядок команди

sudo apt-get install perl

і розслабитися. Про решту подбаємо. Просто переконайтеся, що у вас активне підключення до Інтернету.

Оновіть PERL на Linux

Оновіть PERL на Linux

Встановити perl для Windows:

Спочатку завантажте Active Perl звідси за посиланням. Виконайте ці кроки, щоб інсталювати ActivePerl на Windows система. Перегляньте наведені нижче знімки екрана для того ж.

Крок 1: Після того як ви завантажите інсталятор і почнете інсталяцію, ви побачите наведене нижче вікно, натисніть «Далі», щоб продовжити.

Як встановити Perl на Windows

Крок 2: Прийміть ліцензійну угоду, щоб продовжити встановлення.

Як встановити Perl на Windows

Крок 3: Нижче наведено різні пакети, які будуть встановлені. За замовчуванням буде вибрано всі. Єдина відмінність — PPM (Perl Package Manager). Це утиліта, яку надає Active Perl для встановлення зовнішніх модулів або бібліотек Perl у вашій системі. Натисніть «Далі», щоб продовжити.

Встановлення Perl на Windows

Крок 4: Це різні типи розширень Perl, які можна використовувати для Perl. Переважно ми будемо використовувати .Pl, .Plx і .Pm для Perl. Модулі Perl в основному використовують .Pm як розширення файлу для посилання на файл бібліотеки. Виберіть усі параметри та натисніть кнопку Далі.

Встановлення Perl на Windows

Крок 5: Натисніть кнопку «Встановити», щоб продовжити інсталяцію.

Встановлення Perl на Windows

Крок 6: Після встановлення виконайте команду «Perl –v», щоб перевірити, чи Perl успішно встановлено у вашій системі.

Встановлення PERL увімкнено Windows

Є багато речей, які потрібно обговорити для налаштування середовища Perl як у Linux, так і в Windows, оскільки до цієї інсталяції не буде включено багато бібліотечних файлів. Їх потрібно встановити вручну. Ви можете встановити їх вручну за допомогою CPAN (Comprehensive Perl Archive Network) або PPM, який працює лише для perl windows. Але ці файли не є обов’язковими для початку кодування в Perl.

Окрім цього налаштування Windows, ви можете використовувати Windows 10 нова функція підсистеми Linux у Windows і використовувати її для виконання коду perl

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

Hello world!

Приклад Perl: Hello World

#!/usr/bin/perl -w
#this is just a comment…
print "Hello World";

Не хвилюйтеся, якщо ви не розумієте цей текст. Скоро все стане ясно. Давайте і подивіться на це по рядку:

#!/usr/bin/perl		

Про це розповідає Operating System для виконання цього файлу з програмою, розташованою в /usr/bin/perl Деяким IDE не потрібен цей рядок. Якщо це важливо, ви повинні написати тут шлях до свого інтерпретатора. Пам'ятайте! Цей спеціальний рядок має бути на початку вашої програми та має починатися з #! використовувати попередження; Це ще одна спеціальна команда, яка повідомляє інтерпретатору відображати будь-які попередження, тобто -w, яка активує попередження глобально.

print "Hello World";		

Інструкція друку записує текст на екран. Крапка з комою в кінці рядка повідомляє інтерпретатору perl, що інструкцію завершено. Ви повинні поставити крапку з комою в кінці кожної інструкції в коді Perl. Зверніть увагу на лапки (“). Це необхідно для друку інструкції. Збережіть наведений вище сценарій як firstprog.pl

On Windows

Якщо у вас встановлено Strawberry, ви можете просто натиснути «Запустити». Ви також можете запустити інтерфейс командного рядка та написати на консолі:

C:\> perl path\firstprog.pl		

або, якщо perl.exe не на вашому шляху:

C:\> c:\perl\bin\perl.exe firstprog.pl		

На Linux/Unix

Вам просто потрібно відкрити термінал і написати:

perl firstprog.pl		

Якщо ви не можете запустити програму, переконайтеся, що ви маєте право на її запуск. Введіть у терміналі:

chmod +x firstprog.pl		

Тепер ваша програма виконувана та готова до запуску. Для виконання напишіть:

./firstprog		

Встановіть модулі cpan minus

Модулі — це набір кодів, які використовуються для виконання завдань, які виконують загальні операції в кількох програмах. Якщо ви використовуєте модулі perl, вам не потрібно переписувати коди для виконання тієї самої операції. Perl може використовувати такі зовнішні бібліотеки кодів. Однією з найкращих бібліотек є CPAN. Це розшифровується як Comprehensive Perl Archive Network і містить величезну кількість модулів Perl для використання. Це спільнота або мережа великої кількості розробників, які вносять такі модулі. Установивши підтримку модулів CPAN у вашому модулі perl, ви можете використовувати модулі CPAN і полегшити свою роботу. Більшість модулів Perl написані на Perl, деякі використовують XS (вони написані на C), тому потрібен компілятор C (це легко отримати – не панікуйте. Модулі можуть залежати від інших модулів (майже завжди від CPAN) і Неможливо встановити без них (або без певної їх версії). Варто уважно прочитати документацію, щоб дізнатися про параметри, наведені нижче отримайте, розпакуйте, побудуйте та встановіть модулі з CPAN, щоб полегшити встановлення інших модулів (пізніше ви подякуєте нам). App-cpanminus модулі perl, у командному рядку введіть:

cpan App::cpanminus

cpan App::cpanminus Переконайтеся, що у вас є підключення до Інтернету під час завантаження та встановлення модулів perl.

Установка cpan мінус модулів

Тепер встановіть будь-який модуль:

cpan –i <Module_Name>.		

Розглянемо приклад встановлення модуля File::Data (це інтерфейс для доступу до File Data).

Установка cpan мінус модулів

Змінна Perl

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

Є 3 типи змінних:

Типи змінних у Perl

Типи змінних у Perl

Найпростіші — скаляри, і це наша сьогоднішня тема

Скалярна змінна

Цей тип змінної містить одне значення.

Його ім'я починається зі знака долара та ідентифікатора Perl (це ім'я нашої змінної).

Скалярна змінна в Perl

Скалярна змінна в Perl

Конвенція про найменування

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

  1. Усі скалярні імена починаються з $. Легко запам’ятати, що перед кожним ім’ям має бути $. Уявіть це як $скаляр.
  2. Як PHP. після першого символу $, який є особливим у Perl, допускаються буквено-цифрові символи, тобто від a до z, від A до Z і від 0 до 9. Допускається також символ підкреслення. Використовуйте підкреслення, щоб розділити імена змінних на два слова. «Але перший символ не може бути числом»
  3. Незважаючи на те, що числа можуть бути частиною імені, вони не можуть стояти одразу після $. Це означає, що перший символ після $ буде або алфавітом, або підкресленням. Ті, що надходять із C/C++ на тлі має бути можливість негайно розпізнати подібність. Приклади

Приклад Perl:

$var;
$Var32;
$vaRRR43;
$name_underscore_23;

Однак це не допустимі імена скалярних змінних.

mohohoh                                              # $ character is missing 
$                                                    # must be at least one letter 
$47x                                           # second character must be a letter
$variable!                                 # you can't have a ! in a variable name

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

Два типи скалярних типів даних

  1. Numbers
  2. Рядки

Numbers:

У цьому типі скалярних даних ми можемо вказати:

  • цілі числа, це просто цілі числа, наприклад 2, 0, 534
  • числа з плаваючою комою, це дійсні числа, наприклад 3.14, 6.74, 0.333

Числові змінні в Perl

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

Цілі літерали:

Він складається з однієї чи кількох цифр, яким необов’язково передує плюс або мінус і містить підкреслення.

Приклади Perl:

0;
-2542;
4865415484645          #this also can be written with underscores (for clarity) : 4_865_415_484_645

Як бачите - нічого особливого. Але повірте, це найпоширеніший вид скалярів. Вони скрізь.

Літерали з плаваючою комою:

Він складається з цифр, необов’язково мінуса, десяткової коми та експоненти.

Приклади Perl:

3.14;
255.000;
3.6e20;                                  # it's 3.6 times 10 to the 20th
-3.6e20;                                 # same as above, but negative
-3.6e-20;                                #it's negative 3.6 times 10 to the -20th
-3.6E-20;                                #we also can use E – this means the same the lowercase version -3.6e-20

Літерали з плаваючою комою в Perl

Вісімкове, шістнадцяткове та двійкове представлення:

Це альтернатива десятковій системі числення. Дозвольте мені показати вам вісімкове, шістнадцяткове та двійкове представлення. Коротка таблиця представляє всю важливу інформацію про ці дивні стилі:

Подання База Продовжується
Восьмий 8 0 (нуль)
Шістнадцятковий 16 0x
двійковий 2 0b

Приклади Perl:

255;                               # 255 in decimal notation
0377;                                   # 255 in octal notation
0xff;                                   # 255 in hexadecimal notation
0b11111111;                             # 255 in binary notation

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

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

Давайте розглянемо приклади:

$size=15;             # give $size value of 15
$y = -7.78;           # give $y value of -7.78

Крім того, ви можете помістити в змінну не тільки число, а й вираз.

$z = 6 + 12               # give $z value of 18

Рядки

Рядки: це також дуже простий тип скаляра.

Максимальна довжина рядка в Perl залежить від обсягу пам'яті комп'ютера. Немає обмежень щодо розміру рядка, будь-яка кількість символів, символів або слів може складати рядки. Найкоротший рядок не містить символів. Найдовше може заповнити всю системну пам'ять. Програми на Perl можуть бути повністю написані в 7-бітному наборі символів ASCII. Perl також дозволяє вам додавати будь-який 8-бітний або 16-бітний набір символів. не-ASCII-символи в рядкових літералах. Perl також додав підтримку Unicode UTF-8.

Типи рядків у Perl

Подібно до чисел існує два різних типи рядків:

  • Рядкові літерали в одинарних лапках
  • Double бере в лапки рядкові літерали

Рядкові літерали в одинарних лапках

Одинарні лапки використовуються для включення даних, які потрібно сприймати буквально. Короткий приклад і все має бути зрозуміло:

Приклади Perl:

#!/usr/bin/perl 
$num = 7;
$txt = 'it is $num';
print $txt;

вихід:

це $num

Тут через одинарні лапки значення $num не взято, а буквальні символи «$», «n», «u» і «m» додаються до значення $txt

Doubleрядкові літерали в лапках

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

Приклади Perl:

$num = 7; 
$txt = "it is $num"; 
print $txt;

вихід:

це 7

Тут через подвійні лапки значення $num додається до значення $txt

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

Загадковий \n

Розглянемо наступну програму

Приклади Perl:

print "hello \n";

вихід:

привіт

Perl відображає не лише «hello\n», а лише «hello». чому Оскільки '\n' є спеціальним знаком і означає, що ви хочете перейти на новий рядок під час відображення тексту у вашій програмі. вивести «привіт\n новий рядок»; Наступне питання - чи є ще якийсь особливий знак? Так, вони є! Але не хвилюйтеся – лише кілька. Перевірте таблицю нижче

Конструкція Опис
\n новий рядок
\r повертати
\t таб
\f подача форми
\b повернення на одну позицію
\a дзвін
\e бігти
\ 007 будь-яке вісімкове значення ASCII (тут 007 = дзвіночок)
\x7f будь-яке шістнадцяткове значення (тут 7f = видалити)
\\ зворотний слеш
\ ” подвійна цитата
\l мала наступна літера
\L малими літерами всі наступні літери до \E
\u велика наступна літера
\U великі всі наступні літери до \E
\E Завершити \L, \U

Я знаю, не буває «лише кількох»… Але, повірте, ви повинні знати просто

Рядкова змінна

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

Приклади Perl:

$string = 'tutorial';                                      # give $string the eight-character string 'tutorial'
print $string;
$string = $size + 3 ;                                           # give $string the current value of $size plus 3
print $string;
$string = $ string * 5;                                         # multiplied $string by 5
print $string;

вихід:

підручник315

Як бачите, ви можете помістити числа та рядки в ті самі змінні. Немає класу змінних.

Конкатенація рядків (крапка):

Оператор конкатенації «.» об'єднує дві або більше струн. Пам'ятайте! Якщо рядок містить лапки, символи повернення каретки, зворотні похилі риски, усі ці спеціальні символи потрібно екранувати зворотною похилою рискою.

Приклади змінної Perl:

#!/usr/bin/perl
$a = "Tom is";
$b = "favorite cat";
$c = $a ." mother's ". $b;
print $c;

вихід:

Том - улюблений кіт мами

Струни

«$a», «$b», об’єднується та зберігається в «$c» за допомогою «.» оператор.

Наприкінці…

Перетворення між Numbers і рядки:

Як ви знаєте, Perl автоматично перетворює числа в рядки за потреби. Звідки Perl знає, що нам зараз потрібно? Це просто — все залежить від оператора (ми поговоримо про оператори пізніше, зараз, просто погодьтеся, що існує багато операторів, різних для чисел і рядків). Якщо оператор очікує число, Perl використовуватиме значення як число . Якщо оператор очікує рядок, Perl використовуватиме значення як рядок. Іншими словами, вам не потрібно турбуватися про таке перетворення. Короткий приклад і все повинно бути зрозуміло:

Приклади Perl:

$string = "43";
$number = 28;
$result = $string + $number;
print $result;

вихід:

71

значення $string перетворюється на ціле число та додається до значення $number.

Результат додавання, 71, присвоюється $result.

Область змінної – модифікатори доступу

Ми можемо оголосити скаляр у будь-якому місці програми. Але вам потрібно вказати модифікатор доступу

Існує 3 види модифікаторів

  1. my
  2. місцевий
  3. наші

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

#!/usr/bin/perl 
my $var=5;
if(1)
{ 
my $var_2 =$var;
}
print $var_2;

Немає результату

На виході програми буде нічого!

Підручник PERL для початківців - Повний посібник

У наведеному вище прикладі ви побачите, що оголошено дві змінні, одна з яких знаходиться всередині блоку if ($var_2), а інша — поза блоком If ($var). Змінна, яка оголошена поза блоком, буде доступна для блоку if, але змінна, яка була оголошена всередині блоку if, не буде доступною для зовнішньої програми.

Локальний: використовуючи це, ми можемо маскувати однакові значення змінних у різні значення, фактично не змінюючи початкове значення змінної. Припустімо, що у нас є змінна $a, для якої присвоєно значення 5, ви можете фактично змінити значення цієї змінної, повторне оголошення тієї самої змінної за допомогою локального ключового слова без зміни вихідного значення змінної, яке дорівнює 5. Давайте подивимося, як це працює на прикладі.

#!/usr/bin/perl
$var = 5;
{
local $var = 3;
print "local,\$var = $var \n";
}
print "global,\$var = $var \n";

Вихід вищезазначеної програми буде таким.

локальний, $var = 3

глобально, $var = 5

Таким чином ми можемо змінити значення змінної, не впливаючи на вихідне значення.

Our: коли змінну оголошено з модифікатором доступу «our», її можна використовувати в усьому пакеті. Припустімо, у вас є модуль Perl або пакунок test.pm, який має змінну, оголошену з областю видимості our. Доступ до цієї змінної можна отримати в будь-якому сценарії, який використовуватиме цей пакет.

Якщо ви серйозно ставитеся до програмування на Perl, вам слід почати свою програму з

#!/usr/local/bin/perl

використовувати суворий;

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

Це хороша практика програмування

#!/usr/local/bin/perl
use strict;
$var = 10;
print "$var";

Результат: Помилка

#!/usr/local/bin/perl
use strict;
my $var = 10;
print "$var";

вихід:

10

Масив Perl

Що таке масив Perl?

Масив — це особливий тип змінної, яка зберігає дані у формі списку; до кожного елемента можна отримати доступ за допомогою номера індексу, який буде унікальним для кожного елемента. У своєму масиві можна зберігати числа, рядки, плаваючі значення тощо. Це виглядає чудово. Отже, як створити масив у Perl? У Perl ви можете визначити масив за допомогою символу «@», за яким йде ім’я, яке ви хочете дати. Давайте розглянемо визначення масиву в Perl.

мій @масив;

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

my @array=(a,b,c,d);
print @array;

вихід:

ABCD

Це масив із 4 елементами.

Індекс масиву починається з 0 і закінчується максимальним заявленим розміром, у цьому випадку максимальний розмір індексу становить 3.

Приклад масиву Perl

Приклад масиву Perl

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

@array1=qw/a b c d/;
@array2= qw' p q r s'; 
@array3=qw { v x y z};
print @array1;
print @array2;
print @array3;

вихід:

abcdpqrsvxyz

Припустімо, ви хочете призначити значення 5th елемент масиву, як ми це зробимо.

$масив [4] ='e';

Послідовний масив

Послідовні масиви – це масиви, у яких дані зберігаються послідовно. Припустімо, ви хочете зберегти 1-10 чисел або алфавітів az в масиві. Замість того, щоб вводити всі літери, ви можете спробувати щось на зразок нижче –

@numbers= (1..10);
print @numbers;                   #Prints numbers from 1 to 10;

вихід:

12345678910

Розмір масиву Perl

У нас є масив, який уже доступний, і ви не знаєте, який розмір цього масиву, тож який можливий спосіб знайти це.

@array= qw/a b c d e/;
print $size=scalar (@array);

Чи можемо ми отримати розмір масиву без використання функцій? Так, ми можемо.

@array= qw/a b c d e/;
print $size=scalar (@array);
print "\n";
print $size=$#array + 1;                           # $#array will print the Max Index of the array, which is 5 in this case

вихід:

5

5

Динамічний масив

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

Що таке динамічний масив?

Динамічні масиви – це масиви, які ви оголошуєте, не вказуючи в них жодного значення. Отже, коли саме ми будемо зберігати значення в цьому масиві? Просто, ми зберігаємо їх під час роботи. Для цього є проста програма.

Для виконання цього завдання ми будемо використовувати деякі вбудовані функції Perl.

my $string="This is a kind of dynamic array";
my @array;
@array=split('a',$string);
foreach(@array)
{
print "$_ \n”;
# This is a special variable which stores the current value.
}

вихід:

Це

вид дин

мікрофон

rr

y

Функція split розбиває вміст рядка на масив на основі наданого йому роздільника. Ця функція також видаляє роздільник із рядка, у цьому випадку це 'a';

Push, Pop, shift, unshift для масивів Perl:

Ці функції можна використовувати в Perl для додавання/видалення елементів масиву.

  • Perl Push: додає елемент масиву в кінець існуючого масиву.
  • Perl Pop: видаляє останній елемент із масиву.
  • Perl Shift: видаляє перший елемент із масиву.
  • Perl Unshift: додає елемент на початку масиву.

Функції масиву в Perl

Давайте подивимося приклад, де ми можемо використовувати наведені нижче функції.

@days = ("Mon","Tue","Wed");
print "1st : @days\n";
push(@days, "Thu");                                             # adds one element at the end of an array
print "2nd when push : @days\n";
unshift(@days, "Fri");                                          # adds one element at the beginning of an array
print "3rd when unshift : @days\n";
pop(@days);
print "4th when pop : @days\n";                                 # remove one element from the last of an array.
shift(@days);                                                   # remove one element from the beginning of an array.
print "5th when shift : @days\n";

вихід:

1-й : Пн Вт Ср

2-е під час натискання: Пн Вт Ср Чт

3-й без зміни: Пт Пн Вт Ср Чт

4th when pop : Пт Пн Вт Ср

5-й, коли зміна: Пн Вт Ср

Хеші Perl

Навіщо нам Hash?

Ми вже вивчали скаляри та масиви в попередніх розділах.

Що саме роблять скаляри? Він зберігає лише цілі числа та рядки.

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

Що таке хеші?

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

Розглянемо приклад із трьома людьми, їхній вік представлений у масиві.

@array=('Sainath',23,'Krishna',24,'Shruthi',25);        #This is how an array looks.
print @array;

вихід:

Sainath33Krishna24Шруті25

Таким чином важко дізнатися вік окремих людей, оскільки нам потрібно запам’ятати як розташування індексів імен, так і вік усіх людей. Це може бути просто, коли у вас є 3 імена, але коли у вас є 1000 або більше? Ви знаєте відповідь.

Хеші в Perl

Це ми можемо подолати за допомогою хешу.

Приклад хешу:

print %hash=( 'Sainath' => 23, 'Krishna' => 24, 'Shruthi' => 25); # This is how we create a hash.
print %hash=('Sainath',23,'Krishna',24,'Shruthi',25);# This way of assigning is called list.

вихід:

Sainath33Krishna24Шруті25Сайнат33Krishna24Шруті25

Тепер ми оголосили хеш, чудово!! Але як отримати доступ або роздрукувати його? До кожного елемента хешу слід звертатися за допомогою відповідного ключа, якому буде призначено значення. Таким чином, між кожним ключем і значенням у хеші існує однозначне зіставлення.

Щоб надрукувати вік будь-якої людини, вам просто потрібно запам'ятати ім'я цієї людини.

print $hash{'Krishna'};          # This how we should access a hash. Key enclosed within {}.

Можливо, ви дивувалися, чому я використав $hash{KeyName}, пам’ятайте, що хеш знову ж таки є набором скалярів. Отже, ми можемо використовувати $, який представляє скаляр, щоб отримати доступ до кожного хеш-елемента.

Приклад хешу в Perl

Примітка. Кожен ключ у хеші має бути унікальним, інакше він замінить ваше значення, яке було призначено раніше.

Як ми можемо призначити хеш іншому хешу? Просто, так само, як ми для

Ми також можемо роздрукувати весь хеш.

%hash=( 'Tom' => 23);
%newHash=%hash; # Assigning hash to a new hashprint %newHash; 
print %newHash;

вихід:

Tom23

Додайте хеші Perl

Як бачите, у нас уже є хеш %newHash, і тепер нам потрібно додати до нього більше записів.

$newHash{'Jim'}=25;
$newHash{'John'}=26;
$newHash{'Harry'}=27;
print %newHash;

вихід:

Джим25Джон26Гаррі27

Ключ Perl Delete

Ви можете видалити запис із хешу. Ось як ми можемо це зробити.

delete $newHash{'Jim'};#This will delete an entry from the hash.

Видалити — це вбудована функція Perl. Тут ми побачимо приклад присвоєння хешу масиву.

@array=%newHash;
print "@array";

Примітка. Щоразу, коли ви друкуєте хеш або коли зберігаєте хеш у масиві. Порядок завжди може відрізнятися. Це не завжди те саме.

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

@arraykeys= keys(%newHash);
@arrayvalues=values(%newHash);
print "@arraykeys\n";
print "@arrayvalues\n";    # \n to print new line.		

Щоб видалити всі записи в хеші, ми можемо безпосередньо призначити хешу значення null.

%newHash=();# Це перевизначить хеш без записів.

Умовні оператори Perl

Ми можемо використовувати умовні оператори в Perl. Отже, що таке умовні оператори? Умовні оператори – це ті, у яких ви фактично перевіряєте певні обставини, які повинні бути задоволені у вашому коді.

Згадайте приклад, ви купуєте фрукти, і вам не подобається, щоб ціна була вище 100 баксів. Отже, правило тут — 100 баксів.

Perl підтримує два типи умовних операторів; вони якщо і якщо.

Perl Якщо

Якщо блок коду буде виконано, коли умова виконується.

Умовні оператори Perl

my $a=5;
if($a==5)
{
   print "The value is $a";
}

вихід:

5

Perl Якщо інше

Це виглядає добре. Давайте подумаємо про ситуацію, коли $a не дорівнює 5.

my $a=10;
if($a==5)
{
    print "The values is $a ---PASS";
}
else
{
    print "The value is $a ---FAIL";
}

вихід:

Значення 10 —FAIL

Таким чином ми можемо контролювати лише одну умову за раз. Це обмеження? Ні, ви також можете контролювати різні умови за допомогою if… elsif … else.

Perl Else If

my $a=5;
if($a==6)
{
    print "Executed If block -- The value is $a";
}
elsif($a==5)
{
    print "Executed elsif block --The value is $a";
}
else
{
    print "Executed else block – The value is $a";
}

вихід:

Виконано блок elsif – значення 5

У наведеному вище випадку блок elsif буде виконано, якщо $a дорівнює 5.

Можуть виникнути ситуації, коли кодові блоки if і elsif будуть несправними. У цьому сценарії буде виконано блок коду else. Ви фактично можете скасувати перевірку коду else, якщо вам не подобається включати.

Perl вкладений If

У цьому випадку ви можете використовувати блок коду if ще в одному блоці коду if.

my $a=11; #Change values to 11,2,5 and observe output
if($a<10){
  print "Inside 1st if block";
        if($a<5){
                print "Inside 2nd if block --- The value is $a";
        }
        else{
                print " Inside 2nd else block --- The value is $a";
        }
	}
	else{
        	print "Inside 1st else block – The value is $a";
    }

вихід:

Усередині 1-го блоку else – значення дорівнює 11

Виконайте той самий код, змінивши значення $a; решту можна дізнатися.

Perl Якщо не

Ви вже маєте уявлення про те, що робить if (якщо умова виконується, блок коду буде виконано). Unless протилежне if, unless блок коду буде виконано, якщо умова хибна.

my $a=5;
unless($a==5)
{
   print "Inside the unless block --- The value is $a";
}
else
{
   print "Inside else block--- The value is $a";
}

вихід:

Усередині 1-го блоку else – значення дорівнює 5

Вгадайте, що буде на виході. Ти правий!!!!!. Результатом буде оператор друку блоку else. Через умову в unless code block is true, запам’ятайте unless block буде виконано лише якщо умова є false. Змініть значення $a та виконайте код, щоб побачити різницю.

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

$a= " This is Perl";
if($a eq "SASSDSS"){
print "Inside If Block";
}
else
{
print "Inside else block"
}

вихід:

Всередині блоку else

Використовуючи unless

$a= " This is Perl";
unless($a eq "SASSDSS"){
print "Inside unless Block";
}
else
{
print "Inside else block"
}

вихід:

Всередині, якщо не заблокувати

Perl Loops – Керуючі структури

Perl підтримує керуючі структури, подібні до інших мов програмування. Perl підтримує чотири типи керуючих структур for, foreach, while і until. Ми використовуємо ці оператори для багаторазового виконання певного коду.

Цикл For Perl

Блок коду виконуватиметься, доки не буде виконано умову. Давайте розглянемо приклад того, як Perl зациклює масив.

my @array=(1..10);
for(my $count=0;$count<10;$count++)
{
    print "The array index $count value is $array[$count]";
    print "\n";
}

вихід:

Значення індексу масиву 0 дорівнює 1

Значення індексу масиву 1 дорівнює 2

Значення індексу масиву 2 дорівнює 3

Значення індексу масиву 3 дорівнює 4

Значення індексу масиву 4 дорівнює 5

Значення індексу масиву 5 дорівнює 6

Значення індексу масиву 6 дорівнює 7

Значення індексу масиву 7 дорівнює 8

Значення індексу масиву 8 дорівнює 9

Значення індексу масиву 9 дорівнює 10

Тут у вираз for () включено багато операторів. Для кожного з них є сенс.

for (ініціалізація; умова; збільшення)

Ось ще один спосіб використання для.

for(1..10)
{
    print "$_ n";
    print "\n";
}

вихід:

1n

2n

3n

4n

5n

6n

7n

8n

9n

10n

Perl Foreach

Інструкцію для кожного можна використовувати так само, як і для; головна відмінність полягає в тому, що ми не маємо жодної перевірки умов і збільшення в цьому.

Давайте візьмемо той самий приклад із foreach perl.

my @array=(1..10);
foreach my $value (@array)
{  
	print " The value is $value\n";
}

вихід:

Значення дорівнює 1

Значення дорівнює 2

Значення дорівнює 3

Значення дорівнює 4

Значення дорівнює 5

Значення дорівнює 6

Значення дорівнює 7

Значення дорівнює 8

Значення дорівнює 9

Значення дорівнює 10

Foreach приймає кожен елемент масиву та присвоює це значення $var для кожної ітерації. Ми також можемо використовувати $_ для того ж.

my @array=(1..10);
foreach(@array)
{
    print " The value is $_ \n"; # This is same as the above code.
}

вихід:

Значення дорівнює 1

Значення дорівнює 2

Значення дорівнює 3

Значення дорівнює 4

Значення дорівнює 5

Значення дорівнює 6

Значення дорівнює 7

Значення дорівнює 8

Значення дорівнює 9

Значення дорівнює 10

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

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

Цикл for в Perl

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $key (keys %hash)
{
print "$key \n";
}

вихід:

Міккі

Том

Джеррі

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

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $value(values %hash) # This will push each value of the key to $value
{
	 print " the value is $value \n";
}

вихід:

значення 24

значення 23

значення 25

Perl Поки

Цикл Perl While — це керуюча структура, де блок коду виконуватиметься, доки умова не стане істинною.

Блок коду вийде, лише якщо умова false.

Давайте візьмемо приклад для циклу Perl While.

Цикл while в Perl

Ось проблема, яка вимагатиме введення від користувача та не буде завершена, доки не буде вказано число «7».

#!/usr/bin/perl
$guru99 = 0;
$luckynum = 7;
print "Guess a Number Between 1 and 10\n";
$guru99 = <STDIN>;
while ($guru99 != $luckynum)
{
	print "Guess a Number Between 1 and 10 \n ";
	$guru99 = <STDIN>;
}
print "You guessed the lucky number 7"

вихід:

Відгадайте число від 1 до 10

9

Відгадайте число від 1 до 10

5

Відгадайте число від 1 до 10

7

Ви вгадали щасливе число 7

У наведеному вище прикладі умова while не буде істинною, якщо ми введемо вхідні дані, відмінні від «7».

Якщо ви бачите, як тут працює while, блок коду буде виконано, лише якщо умова in a while є істинною.

Perl do-while

Цикл Do while буде виконано принаймні один раз, навіть якщо умова в секції while є хибною.

Давайте візьмемо той самий приклад, використовуючи do while.

$guru99 = 10;
 do {
 print "$guru99 \n";
 $guru99--;
 } 
 while ($guru99 >= 1);
 print "Now value is less than 1";

вихід:

10

9

8

7

6

5

4

3

2

1

Зараз значення менше 1

Perl поки

Блок коду Until подібний до unless в умовному операторі. Тут блок коду виконуватиметься, лише якщо умова в блоці до хибна.

Давайте візьмемо той самий приклад, який ми використали на деякий час.

Ось проблема, яка вимагатиме введення від користувача та не буде завершена, доки не буде вказано ім’я, відмінне від «sai».

print "Enter any name \n";
 my $name=<STDIN>;
 chomp($name);
 until($name ne 'sai')
 {
    print "Enter any name \n";
    $name=<STDIN>;
    chomp($name);
 }

вихід:

Введіть будь-яке ім'я sai

Perl do-until:

Do until можна використовувати лише тоді, коли нам потрібно, щоб умова була хибною, і вона повинна бути виконана принаймні один раз.

print "Enter any name \n";
 my $name=<STDIN>;
 chomp($name);
 do
 {
     print "Enter any name \n";
     $name=<STDIN>;
    chomp($name);
 }until($name ne 'sai');

вихід:

Введіть будь-яке ім'я Говард

Введіть будь-яке ім'я Шелдон

Введіть будь-яке ім'я sai

Виконайте приклади кодів while, do-while, until та do-until, щоб побачити різницю.

Perl Operaтор

Що таке Operaтор?

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

Арифметика Operaторс:

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

Operaтор Опис Приклад

+

Операція додавання, яка використовується для додавання двох значень або змінних

зберігання цінностей

$x=5+6; # або

$y=6;

$z=$x+$y;

-

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

$x=6-5; # або

$y=6;

$z=$x-$y;

*

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

$x=6*5; # або

$y=6;

$z=$x*$y;

/

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

$x=36/6; # або

$y=6;

$z=$x/$y;

**

Експоненціальний оператор, який використовується для надання експоненти та отримання значення.

Наприклад: 22 = 43 = 27

$x=5**5; # або

$x=4;

$y=2;

$z=$x**$y;

%

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

$x=5%2; # або

$x=10;

$y=2;

$z=$x % $y;

++

Унарний оператор додавання для збільшення значення змінної на 1

$x=5;

$x++;

Or

++$x;

-

Унарний оператор віднімання для зменшення значення змінної на 1

$x=5;

$x–; # зменшення посади

Or

–$x;# попередній декремент

Приклад виконання всіх вищезазначених операцій.

my $x=10;
my $y=2;
my $z;
$z=$x+$y;
print ("Add of $x and $y is $z \n");
$z=$x-$y;
print ("Sub of $x and $y is $z \n");
$z=$x*$y;
print ("Mul of $x and $y is $z \n");
$z=$x/$y;
print ("Div of $x and $y is $z \n");
$z=$x**$y;
print ("Exp of $x and $y is $z \n");
$z=$x%$y;
print ("Mod of $x and $y is $z \n");

вихід:

Додайте 10 і 2 і отримаєте 12

Частина 10 і 2 дорівнює 8

Mul з 10 і 2 дорівнює 20

Ділення 10 і 2 дорівнює 5

Досвід 10 і 2 становить 100

Модифікація 10 і 2 дорівнює 0

Призначення Operaторс:

Оператори присвоєння просто присвоюють значення змінним, але є ще одна річ, яку ми повинні пам’ятати тут, оператори присвоєння також виконуватимуть арифметичні операції та призначатимуть нове значення тій самій змінній, над якою виконується операція.

Operaтор Опис Приклад

+=

Оператор додавання, який використовується для додавання та присвоєння значення одній змінній

$x=4;

$x+=10;

-=

Оператор віднімання, який використовується для віднімання та присвоєння значення тій самій змінній

$x=4;

$x-=10;

*=

Оператор множення, який використовується для додавання та присвоєння значення одній змінній

$x=4;

$x*=10;

/=

Оператор ділення, який використовується для ділення та присвоєння значення одній змінній

$x=4;

$x/=10;

**=

Експоненціальний оператор, який використовується для отримання експоненти та присвоєння значення тій самій змінній

$x=4;

$x**=10;

%=

Оператор модуля, який використовується для отримання нагадування під час ділення та присвоєння значення тій самій змінній

$x=10;

$x%=4;

Приклад виконання всіх вищезазначених операцій.

my $x=10;
$x+=5;
print("Add = $x\n");
$x-=5;
print("Sub= $x\n");
$x*=5;
print("Mul = $x\n");
$x/=5;
print("Div = $x\n");

вихід:

Додайте = 15

Sub= 10

Mul = 50

Розділ = 10

Логічний і реляційний Operaторс:

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

Логічний і реляційний Operators у Perl

Логічний і реляційний Operators у Perl

Operaтор Опис

==або екв

Operator використовується для перевірки рівності обох змінних

!=Або ні

Operator використовується для перевірки, чи обидві змінні не рівні

> або gt

Operator використовується для перевірки чи

А більше, ніж В

<or lt

Operator використовується для перевірки чи

A менше, ніж B

>=або ge

Operator використовується для перевірки чи

A більше або дорівнює B

<=або le

Operator використовується для перевірки чи

А менше або дорівнює В

|| або або

Operator використовується для перевірки того, чи A, чи B утримує значення

&&або і

Operator використовується для перевірки того, що як A, так і B утримують значення

Розглянемо приклад, де можна пояснити всі сценарії.

my $x=5;
my $y=5;
if($x == $y){
print ("True -- equal $x and $y \n");
}
else{
print ("False -- not equal $x and $y\n");
}
$x=6;
$y=7;
if($x != $y){
print ("True -- not equal $x and $y\n");
}
else{
print ("False -- equal $x and $y\n");
}
if($y > $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}
if($x < $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($x <= $y){
print ("True -- $x less than $y\n");
}
else{
print ("False -- $x less than $y\n");
}
if($y >= $x){
print ("True -- $y greater than $x\n");
}
else{
print ("False -- $y greater than $x\n");
}

вихід:

Правда — дорівнює 5 і 5

Правда — не дорівнює 6 і 7

Правда — 7 більше 6

Правда — на 6 менше, ніж на 7

Правда — на 6 менше, ніж на 7

Правда — 7 більше 6

Ви можете побачити приклади логічних операторів у наступних розділах.

Спеціальні змінні Perl

Що таке спеціальні змінні Perl?

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

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

Скалярні спеціальні змінні

Змінна Опис

$_$ARG

Це стандартна змінна, яка зберігає поточні значення.

$0 або $PROGRAM_NAME

Зберігає назву файлу сценарію Perl.

$/

Роздільник вхідних записів, має значення за замовчуванням '\n', яке є символом нового рядка

$.

Містить поточний номер рядка файлу, який читається

$,

Роздільник полів виводу, в основному використовується оператором print(). За замовчуванням це значення встановлено на 0, ми можемо змінити значення цієї змінної.

$\

Вивести роздільник записів, значення цієї змінної буде порожнім; ми можемо призначити цьому будь-яке значення, яке використовуватиметься оператором print() під час друку виведення.

$#

Ця змінна використовується для формату виведення під час друку чисел.

$%$FORMAT_PAGE_NUMBER

Зберігає номер поточної сторінки прочитаного файлу.

$=$FORMAT_LINES_PER_PAGE

Буде зберігати поточну довжину сторінки прочитаного файлу.

$-$FORMAT_LINES_LEFT

Зберігає значення кількості рядків, які залишилися для друку зі сторінки.

$~$FORMAT_NAME

Назва формату: зберігає формат вибраного виводу за замовчуванням як ім’я дескриптора файлу.

$^$FORMAT_TOP_NAME

Зберігає значення формату заголовка обробника файлу, за замовчуванням буде значення _TOP, за яким іде ім’я дескриптора файлу.

$|$OUTPUT_AUTOFLUSH

За умовчанням дорівнює нулю; це використовується для очищення вихідного буфера після кожного write() або print().

$$

Зберігає номер запущеного процесу інтерпретатора Perl.

$?

Код стану: канал і системний виклик. Статус повернення виконаної команди.

$&$MATCH

Використовується в регулярних виразах, це буде містити рядок останнього успішного збігу шаблону.

$`$ПЕРЕДМАЧ

Використовується в регулярних виразах, це міститиме рядок, якому передує остання успішна відповідність шаблону.

$'$POSTMATCH

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

$+$LAST_PAREN_MATCH

Містить рядок останньої дужки, яка відповідає останньому шаблону пошуку.

$

$1, $2, $3 …. Зберігає значення шаблону, зіставлені в порядку.

$[

Перший індекс: масив, підрядок.

$]

Версія Perl.

$”

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

$;

Роздільник нижнього індексу, який використовується в багатовимірних масивах

$!

У числовому контексті друкує номер помилки. У контексті рядка вивести помилку.

$@

Зберігає інформацію про синтаксичну помилку, яка використовується під час використання eval().

$<

Містить справжній UID (ідентифікатор користувача) процесу, на якому виконується сценарій.

$>

Зберігає ефективний UID процесу, на якому виконується сценарій.

$(

Містить справжній GID (ідентифікатор групи) процесу, на якому виконується сценарій.

$)

Містить ефективний GID процесу, у якому виконується сценарій.

$^D$НАЛАГОДЖЕННЯ

Зберігає поточне значення прапорів налагодження.

$^C

Зберігає поточне значення прапора, якщо використовується параметр командного рядка –c.

$^F

Максимальний дескриптор системного файлу за умовчанням встановлено на 2

$^I$INPLACE_EDIT

Зберігає значення перемикача командного рядка –i.

$^M

Спеціальний пул пам’яті можна використовувати, коли сценарій Perl вимикається через помилку браку пам’яті.

$^O$OSNAME

Operaінформація про систему зберігається. «Linux» для систем Linux, «mswin32» для Windows систем.

$^T$BASETIME

Час виконання сценаріїв у секундах.

$^W$УВАГА

Поточне значення перемикача командного рядка –w. Перемикач попередження.

$ARGV

Ім'я поточного файлу, якщо використовується <>.

Спеціальні змінні масиву:

Змінна Опис

@INC

Містить список шляхів, де можна переглянути модулі бібліотеки Perl або сценарії під час виконання поточного сценарію. Цей @INC використовується операторами use і require для пошуку цих шляхів для бібліотечних модулів.

@ARGV

Зберігає передані аргументи командного рядка.

@_

Використовується в підпрограмах, при передачі параметрів у підпрограми.

@F

Це масив, у якому зберігаються рядки введення під час автоматичного розділення –a (використовується перемикач командного рядка).

Хешування спеціальних змінних:

Змінна Опис

% INC

Назва файлу буде ключами; значення будуть шляхом до цих файлів. Використовується робити, використовувати і вимагати.

%ENV

Системні змінні середовища.

%SIG

Signals обробник.

Регулярний вираз Perl

Що таке регулярний вираз?

Регулярний вираз Perl є досить сильним у відповідності шаблонам рядків у операторах або групі операторів. Регулярні вирази здебільшого використовуються для синтаксичного аналізу тексту, зіставлення шаблонів і багато іншого на основі вимог. У нас є певні оператори, які спеціально використовуються зв’язуванням шаблону регулярного виразу =~ та !~. Це оператори перевірки та присвоєння.

Регулярні вирази Operaторс

Регулярні вирази Operators у Perl

Регулярні вирази Operators у Perl

  • Perl Match — m//
  • Замінник Perl – s///
  • Perl Transliterate – tr///

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

колісниця Сенс

\

Спеціальна або цитата

*

Збіг 0 або більше символів

+

Збіг 1 або більше символів

?

Збіг 0 або 1 символу

|

Можна використовувати для поєднання альтернативних візерунків

()

Використовується для збереження зразка, що збігається

[]

Можна передати набір символів. Особливо використовується для цифр і алфавітів.

{}

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

^

Початок рядка

$

Кінець рядка

\w

Використовується для відповідності одному символу або слову, яке може бути буквено-цифровим, включаючи «_»

\W

Відповідність будь-чому, крім буквено-цифрового

\s

Використовується для зіставлення пробілів

\S

Відповідність будь-чому, крім пробілів

\d

Зіставте числа. Не десяткові значення, а від’ємні значення

\D

Зіставте будь-що, крім чисел.

\t

Відповідність простору табуляції

\n

Відповідність новому рядку

Вище наведено набір символів, які можна використовувати під час зіставлення шаблону.

Давайте подивимося кілька прикладів.

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

my $userinput="Guru99 Rocks";
if($userinput=~m/.*(Guru99).*/)
{
	print "Found Pattern";
}
else
{
	print "unable to find the pattern";
}

вихід:

Знайдений шаблон

Тут ми написали регулярний вираз як /.*(Guru99).*/.* відповідає всім символам у рядку. «.» у perl regex match відноситься до будь-якого символу, включаючи пробіл.

Давайте подивимося, як саме ми можемо створити регулярний вираз.

Розглянемо приклад рядка з кількох слів, цифр і спеціальних символів на зразок «Всім привіт, це мій номер: +91-99298373639»;

Регулярний вираз: /^\w+\s\w+\s\w+\s\w+\s\w+\s\w+\:\+\d+\-\d+/i

Слово інтервал слово інтервал слово інтервал слово інтервал слово інтервал спеціальний символ: пробіл спеціальний символ+цифри спеціальний символ –цифри.

Збіг Perl Operaторс

Оператори збігу використовуються для зіставлення рядка в якомусь операторі або в змінній.

my $var="Hello this is perl";
if($var=~m/perl/)
{
	print "true"; 
} 
else
{
	print "False"; 
}

вихід:

правда

Цей невеликий код виведе «true», оскільки пошук шаблону perl ідентифікує рядок у змінній. По суті, Perl шукає текст, наданий у // по всьому рядку, навіть якщо він знайде в одному місці, він поверне «true». Шаблон може бути будь-де в змінній. Ми можемо спробувати замінити =~ на !~, щоб побачити різницю між цими двома операторами.

Заміна Perl Operaтор

Цей оператор можна використовувати для пошуку та заміни будь-якого символу нульовим або іншим символом.

my $a="Hello how are you";
$a=~s/hello/cello/gi;
print $a;

вихід:

віолончель як справи?

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

Переклад Perl Operaтор

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

my $a="Hello how are you";
$a=~tr/hello/cello/;
print $a;

вихід:

Привіт ти, корова

Файловий ввід-вивід Perl

Perl розроблено для ефективного керування файлами та операціями введення/виведення. Основна перевага Perl полягає в розборі та обробці файлів. У Perl є багато вбудованих функцій і операторів, які використовуються під час обробки файлів.

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

У цьому посібнику зі сценаріїв Perl ви дізнаєтеся,

Perl Відкрити файл

Ми можемо відкрити файл за допомогою функції open(), доступної в Perl.

open(FILEHANDLE, "filename or complete path of the file");

Ось ми відкрили файл, тепер виникає питання. Це для читання чи письма?

Perl Читання файлу та Perl Запис файлу

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

Read – open(my $fh,"<filename or complete path of the file"); 
Write – open(my $fh,">filename or complete path of the file");
Append – open(my $fh,">>filename or complete path of the file");

Кілька прикладів читання файлу:

Читання файлу в Perl

Уявімо, що у нас є файл perl з назвою file.txt і містить кілька рядків тексту. Нам потрібно відкрити цей файл і роздрукувати його.

open(FH,"<file.txt"); 
while(<FH>)    # Looping the file contents using the FH as a filehandle. 
{
	print "$_";
}
close FH;

or

open(FH,"<file.txt"); 
my @content=<FH>; # specifying the input of the array is FH.
foreach(@content)
{
	print "$_";
}
close FH;

Це роздрукує вміст файлу на екрані виводу.

Тепер ми напишемо програму для створення та запису даних у файл perl.

Запис файлу на Perl

open(FH,">test.txt");
my $var=<>;
print FH $var;
close FH;

Це запише вхідні дані, надані під час виконання, і створить файл test.txt, який матиме вхідні дані.

Наведений вище спосіб завжди намагатиметься створити файл з іменем test.txt і записуватиме вхідні дані у файл; ми напишемо те саме, щоб додати файл.

Операція додавання файлу в Perl

open(FH,">>test.txt");
my $var=<>;
print FH $var;
close FH;
Режими Опис

<

Читати

+<

Читає і пише

>

Створює, записує та скорочує

+>

Читати, писати, створювати та скорочувати

>>

Пише, додає та створює

+>>

Читати, писати, додавати та створювати

Тепер ми маємо побачити, як читати, писати та додавати файли на базових прикладах.

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

Perl Tell

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

open(FH, "test.pl");
while(<FH>)
{
	$a=tell FH;
	print "$a";
}

Пошук Perl

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

seek FH, bytes, WHENCE;

WHENCE - це позиція початкового покажчика файлу. Нуль встановить його з початку файлу.

Приклад: нехай файл input.txt містить такі дані, як «Привіт, це мій світ».

open FH, '+<','input.txt';
seek FH, 5, 0;    # This will start reading data after 5 bytes.
$/ = undef;
$out = <FH>;
print $out;
close FH;

вихід:

це мій світ

Від’єднати Perl

Роз’єднати використовується для видалення файлу.

unlink("filename or complete file path");

Обробка каталогів:

Ми також можемо обробляти каталоги, через які ми можемо обробляти кілька файлів.

давайте подивимося, як відкрити каталог. Ми можемо використовувати методи opendir і readdir.

opendir(DIR,"C:\\Program Files\\"); #DIR is the directory handler.

while(readdir(DIR)) # loop through the output of readdir to print the directory contents.
{
   print "$_\n";
}
closedir(DIR); #used to close the directory handler.

or

opendir(DIR,"C:\\Program Files\\");
@content=readdir(DIR);
foreach(@content)
{
	print "$_\n";
}
closedir(DIR);

Це надрукує всі доступні файли в цьому каталозі.

Тести файлів Perl та їхнє значення

-r

Щоб перевірити, чи файл/каталог доступний для читання поточному користувачу/групі

-w

Щоб перевірити, чи доступний файл/каталог для запису поточним користувачем/групою

-x

Щоб перевірити, чи файл/каталог можна виконати поточним користувачем/групою

-o

Щоб перевірити, чи файл/каталог належить поточному користувачеві

-R

Щоб перевірити, чи цей справжній користувач/група читає файл/каталог

-W

Щоб перевірити, чи файл/каталог доступний для запису цим справжнім користувачем/групою

-X

Щоб перевірити, чи файл/каталог можна виконати цим справжнім користувачем/групою

-O

Щоб перевірити, чи файл/каталог належить цьому справжньому користувачеві

-e

Щоб перевірити, чи існує назва файлу/каталогу

-z

Щоб перевірити, чи файл існує та чи має нульовий розмір (завжди false для каталогів)

-f

Щоб перевірити, чи запис є звичайним файлом

-d

Щоб перевірити, чи Entry є каталогом

-l

Щоб перевірити, чи запис є символічним посиланням

-S

Щоб перевірити, чи Entry є сокетом

-p

Щоб перевірити, чи Entry є іменованим каналом («FIFO»)

-b

Щоб перевірити, чи Entry є блоковим спеціальним файлом (наприклад, монтованим диском)

-c

Щоб перевірити, чи Entry є спеціальним символьним файлом (наприклад, пристроєм введення-виведення)

-u

Щоб перевірити, чи встановлено файл або каталог

-g

Щоб перевірити, чи файл або каталог встановлено gid

-k

Щоб перевірити, чи файл або каталог має закріплений біт

-t

Наведений дескриптор файлу є TTY (як за системною функцією isatty(), назви файлів не можна перевірити цим тестом)

-T

Щоб перевірити, чи файл виглядає як «текстовий» файл

-B

Щоб перевірити, чи файл виглядає як двійковий файл

-M

Щоб перевірити вік модифікації (вимірюється в днях) файлу

-A

Щоб перевірити вік доступу (вимірюється в днях) файлу

-C

Щоб перевірити вік модифікації Inode (вимірюється в днях) файлу

Підпрограма Perl

Що таке підпрограма?

Підпрограми подібні до функцій в інших мовах програмування. Ми вже використовували деякі вбудовані функції, такі як print, chomp, chop тощо. Ми можемо написати власні підпрограми на Perl. Ці підпрограми можна записати будь-де в програмі; бажано розміщувати підпрограми або на початку, або в кінці коду.

Підпрограма в PERL

Приклад підпрограм

sub subroutine_name 
{
	Statements…;    # this is how typical subroutines look like.
}

Тепер, коли ми знаємо, як написати підпрограму, як отримати до неї доступ?

Нам потрібно отримати доступ або викликати підпрограму, використовуючи назву підпрограми з префіксом «&».

sub display
{
	print "this is a subroutine";
}
display();    # This is how we call a subroutine

Передача параметрів Perl і аргументів Perl

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

sub display
{		
	my $var=@_; # @_ is a special variable which stores the list of arguments passed.		
	print "$var is the value passed";		
}		
display(2,3,4);    #this is how we need to pass the arguments.

вихід:

3 – передане значення

@_ — це спеціальна змінна масиву, яка зберігає аргументи, передані до підпрограм.

Perl Shift

Ми також можемо використовувати ключове слово 'shift', яке зсуває один параметр за раз до змінної або $_[0],$_[1]…, що є окремим елементом масиву @_

sub display
{		
my $var=shift;		
print "$var is passed";		
}		
display("hello");

вихід:

привіт передано

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

Основна функція підпрограм полягає у виконанні певного завдання та поверненні результату багаторазового коду.

Підручник PERL для початківців - Повний посібник

Ми можемо повернути значення з підпрограми за допомогою ключового слова return.

sub add
{
my $a=shift;
my $b=shift;
return($a+$b);
}
my $result=add(5,6);
print $result;

вихід:

11

$result зберігатиме значення доданих $a і $b.

Ми також можемо передати хеші та масив безпосередньо в підпрограму.

sub hash
{
my %hash=@_;
print %hash;
}
%value= ( 1=>'a', 2=>'b');
&hash(%value);

вихід:

1a2b

Ми також можемо повернути хеш або масив.

sub hashArray
{
my %hash=@_;
print "Inside Sub-routine";
print %hash;
return(%hash);
}
%hash=(1=>'a', 2=>'b');
my(@ret)=hashArray(%hash);
print "After Sub-routine call";
print @ret;

вихід:

Всередині Sub-routine2b1aПісля Sub-routine call2b1a

Формат Perl

У Perl є механізм, за допомогою якого ми можемо створювати звіти. Використовуючи цю функцію, ми можемо створювати звіти саме так, як нам потрібно, під час друку на екрані виводу або у файлі. Простий формат можна записати за допомогою функцій printf або sprintf, доступних у Perl.

printf "%05d\n", 30;

Це включатиме початкові нулі перед числом 30, що означає загальну кількість цифр до 5. Те саме можна використовувати для sprintf.

sprintf "%05d\n", 30; # This will print the same as printf.

Використовуючи printf і sprintf, ми можемо отримати більшість форматів Perl. У випадку зі звітами це буде важко реалізувати.

Формат Perl

Приклад звіту:

================================================== =========================
Ім'я Адреса Вік Тел
================================================== =========================
Krishna Ченнаї 24 929309242
Shruthi Chennai 24 929309232

Вище наведено приклади звітів, які нам потрібно надрукувати таким же чином у Perl. Цього можна досягти за допомогою perl printf і perl sprintf. Його можна ефективно реалізувати за допомогою формату.

Формат можна оголосити таким чином.

format FORMATNAME=FORMATLIST.

Тут ми будемо використовувати певний метод write для друку даних на вихідному екрані або у файлі.

Symbol Опис

@

Використовується для позначення початку тримача поля

>

Праве вирівнювання тексту

<

Вирівнювання тексту за лівим краєм

|

Вирівнювання по центру

#

Числовий, якщо вказано кілька #. Вважається коментарем, якщо вказано один #

.

Десяткова точка

^

Початок утримувача поля також можна використовувати для багаторядкового, а також для переносу слів

~

Рядок має бути порожнім, якщо змінна порожня

@*

Кілька рядків.

($name,$addr,$age,$phone)=("krishna","chennai","24","929309242"); 
write;
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232"); 
write; 
format STDOUT_TOP= 
=============================================================== 
NAME ADDRESS AGE PHONE 
===============================================================
 . 
format STDOUT= 
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<< 
$name, $addr, $age, $phone 
.

Виконайте код, щоб побачити результат.

Ми використовуємо символ @, щоб указати початок поля або рядка, '<' для кожного символу.

Ми використовуємо STDOUT для друку на стандартному виводі. Ми можемо змінити це на обробник файлів, який ми використовуємо для запису даних у файл.

open(REPORT,">test.txt"); 
($name,$addr,$age,$phone)=("krishna","chennai","24","929309232"); 
write REPORT; 
($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232"); 
write REPORT; 
format REPORT_TOP= 
=============================================================== 
NAME ADDRESS AGE PHONE 
===============================================================
 . 
format REPORT= 
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<< 
$name, $addr, $age, $phone

Ми можемо замінити «<» на «>» або «|» щоб змінити вирівнювання тексту. STDOUT_TOP використовується для розробки заголовка формату. Ми також можемо використовувати те саме з обробником файлів за допомогою FH_TOP (FH є обробником файлів). Це виведе формат у файл, над яким ми працюємо на.

Стандарти кодування Perl

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

Стандарти кодування в Perl

Стандарти кодування в Perl

Написання коду просте і легке. Проблема виникає, коли його потрібно підтримувати на пізніших етапах. Під час написання коду необхідно дотримуватися відповідних інструкцій і стандартів кодування. Perl також визначає певні стандарти, які будуть корисні програмістам для написання коду. Під час написання коду бажано завантажувати «строгий» і «модуль попереджень». Кожен із цих модулів має свою важливість. Strict змусить нас оголосити змінну перед використанням, а також повідомить, чи є у вашому коді пусте слово. Альтернативно можна використовувати модуль попереджень, передавши параметр «-w» інтерпретатору Perl у shebang. Попередження будуть надруковані на екрані виводу.

#!/usr/bin/perl –w

Нижче наведено декілька списків стандартів.

  • Використовуйте модуль "суворий" і "попередження".
  • Видалити змінну, яка не використовується.
  • Імена змінних повинні бути зрозумілими іншим користувачам. Наприклад: $name, @fileData тощо.
  • Під час кодування сценарію потрібна документація.
  • Не закодуйте жодних значень, скоріше спробуйте отримати їх динамічно або попросіть користувача ввести їх під час виконання (шлях до файлу, імена файлів).
  • Максимально повторне використання коду. Спробуйте помістити багаторазовий код у підпрограми.
  • Це означає, що для підпрограм слід давати повні назви.
  • Підпрограми повинні бути написані з відповідними коментарями та документацією.
  • Завжди ініціалізуйте змінні.
  • Завжди перевіряйте коди повернення для системних викликів. Відкриття файлу може відбутися, а може й не відбутися, код повернення тут покаже статус помилки, якщо файл не існує.

    Приклад: відкритий (FH,

  • Підпрограма завжди повинна повертати значення.
  • Відкрийте фігурне в тому ж рядку.
  • Однорядковий BLOCK може бути розміщений в одній лінії з фігурним.
  • Використовуйте мітки під час циклів, щоб було легко вийти з циклу, коли це необхідно.
  • Використовуйте підкреслення, коли довгі фрази слів записуються як ім’я змінної або підпрограми.
  • Спробуйте використовувати простий регулярний вираз під час кодування.

Ідеальний приклад зі стандартами кодування:

#######################################################################
Program to read the file content
# Date: 22-2-2013
# Author : Guru99
########################################################################
#!/usr/bin/perl 
use strict;
use warnings; 
my $line;
open FR, "file.txt" || die("Cannot open the file $!");
while ($line=<FR>) 
{   
	print $line;
} # Looping file handler to print data

Обробка помилок Perl

Що таке виняток?

Винятком є ​​подія, що відбувається під час виконання програми, яка призупиняє або завершує вашу програму.

Обробка помилок

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

Обробка помилок у Perl

Обробка помилок у Perl

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

Що повертається у разі системних викликів?

У випадку системних викликів статус повернення зберігатиметься у двох спеціальних змінних $? І $!

$! – Це перехопить номер помилки або номер помилки, пов’язаний із повідомленням про помилку.

$? – Це буде зберігати функцію повернення статусу system().

Використання оператора Perl або Logical

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

Ex:

open(FH,"<test.txt");

Це відкриє файл у режимі читання, якщо він існує.

Що робити, якщо файл відсутній?

open(FH,"<test.txt") or die("File not exists $!"); # This will perl exit the program if the file not exists. 
open(FH,"<test.txt") or warn ("File not exists $!"); # This will print a warning message on STDERR

Perl Eval

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

Функція Perl Eval може мати блок коду або вираз. Evals розглядає все, що в ньому розміщено, як рядок.

Розглянемо ситуацію виклику підпрограми, яка не визначена в сценарії. У цій ситуації сценарій завершується повідомленням «невизначена підпрограма &XYZ, цю помилку можна обробити у функції eval.

Існує багато застосувань блоку evals; одне з таких застосувань — коли ми хочемо завантажити модуль, який є специфічним для операційної системи під час виконання.

Приклад: Ділення на нуль викликає фатальну помилку; щоб впоратися з цим, ми можемо розмістити код у блоці evals.

$a=5; 
$b=0; 
eval 
{ 
 '$result=$a/$b'; 
} 
if($@)
{
 print "$@";    # All the error codes returned by evals will get stored in $@. 
}

вихід:

синтаксична помилка в C:\Users\XYZ\Text.pl рядок 8, біля «)

{“

Виконання C:\Users\XYZ\Text.pl перервано через помилки компіляції.

Приклад: eval з використанням оператора perl die.

sub test 
{ 
die "Dieing in sub test \n"; 
} 
eval 
{ 
test(); 
}; 
print "Caught : $@\n";

вихід:

Спійманий: смерть під час тестування

Використання Perl Спробуйте

Perl не підтримує блоки коду try, catch і finally, як інші мови програмування. Ми все ще можемо використовувати їх, завантаживши зовнішній модуль Perl.

використовуйте Try::Tiny;

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

Замість $@ у eval Try::Tiny використовує $_.

# обробляти помилки за допомогою обробника catch

try 
{ 
die "Die now"; 
} 
catch 
{ 
warn "caught error: $_"; # not $@ 
};

Використовуючи остаточно.

my $y;
try 
{ 
 die 'foo' 
}
finally 
{ 
    $y = 'bar' 
};

try 
{ 
    die 'Die now' 
} 
catch 
{ 
    warn "Returned from die: $_" 
} 
finally 
{ 
    $y = 'gone' 
};

вихід:

foo у C:\Users\XYZ\Text.pl рядок 4.

Таким чином ми можемо використовувати try, catch і finally.

спробуйте { # оператор }

catch {# оператор }

finally { # оператор };

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
};

вихід:

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
} 
catch 
{ 
# statement 
};

вихід:

Програмування Perl Socket

Що таке розетка?

Підручник PERL для початківців - Повний посібник

Сокет — це середовище, через яке два комп’ютери можуть взаємодіяти в мережі за допомогою мережевої адреси та портів.

Припустимо, A (Сервер) і B (Клієнт) є двома системами, які повинні взаємодіяти одна з одною за допомогою Sockets для запуску деяких програм.

Щоб реалізувати це, нам потрібно створити сокети в A (сервер) і B (клієнт), A буде в стані отримання, а B буде в стані надсилання.

A (Сервер):

Тут сервер бажає отримати з’єднання від B (клієнт) і виконати деякі завдання та надіслати результат назад B (клієнт). Коли ми виконуємо код, операційна система в A намагається створити сокет і прив’язує один порт до цього сокета. Тоді він буде слухати відправника, яким є B.

Б (Клієнт).

Тут клієнт хоче надіслати якусь програму зі своєї системи на A (сервер) для обробки. Коли ми виконуємо код, операційна система в B намагається створити сокет для зв’язку з A (сервером), B має вказати IP-адресу та номер порту A, до якого B хоче підключитися.

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

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

Серверні операції:

  • Створити Socket
  • Прив’язати сокет до адреси та порту
  • Слухайте сокет на цій адресі порту
  • Прийняти підключення клієнта, який намагається підключитися за допомогою порту та IP-адреси сервера
  • Виконувати операції

Клієнт Operaтиони:

  • Створити Socket
  • Підключіться до сервера, використовуючи адресу його порту
  • Виконувати операції

Client-Server Operaції в Perl

socket.io

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

IO::Socket::INET:

Цей модуль підтримує домен INET і побудований на IO::Sockets. Усі методи, доступні в IO::Sockets, успадковуються в модулі INET.

Клієнт і сервер, що використовують протокол TCP:

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

Перш ніж продовжити далі, давайте подивимося, як ми можемо створити об’єкт для модуля IO::Socket::INET і створити сокет.

$socket = IO::Socket::INET->new(PeerPort => 45787, 
PeerAddr => inet_ntoa(INADDR_BROADCAST), 
Proto => udp,LocalAddr => 
'localhost',Broadcast => 1 )
or 
die "Can't create socket and bind it : $@n";

Новий метод у модулі IO::Socket::INET приймає хеш як вхідний параметр для підпрограми. Цей хеш є попередньо визначеним, і нам просто потрібно надати значення для ключів, які ми хочемо використовувати. Існує список ключів, які використовує цей хеш.

PeerAddr

Адреса віддаленого вузла

PeerHost

Синонім для PeerAddr

PeerPort

Віддалений порт або служба

LocalAddr

Адреса прив'язки локального хоста

локальний

Синонім для LocalAddr

Локальний порт

Порт прив'язки локального хоста

прото

Назва (або номер) протоколу

тип

Тип розетки

Бар

Розмір черги для прослуховування

ReuseAddr

Встановіть SO_REUSEADDR перед зв’язуванням

Повторне використання

Встановіть SO_REUSEADDR перед зв’язуванням

ReusePort

Встановіть SO_REUSEPORT перед зв’язуванням

Віщати

Встановіть SO_BROADCAST перед зв'язуванням

Тайм-аут

Значення часу очікування для різних операцій

MultiHomed

Спробуйте всі адреси для багатодомних хостів

Блокування

Визначте, чи буде підключення в режимі блокування

Server.pl

use IO::Socket; 
use strict; 
use warnings; 
my $socket = new IO::Socket::INET ( 
LocalHost => 'localhost', 
LocalPort => '45655', 
Proto => 'tcp', 
Listen => 1, 
Reuse => 1, 
); 
die "Could not create socket: $!n" unless $socket; 
print "Waiting for the client to send datan"; 
my $new_socket = $socket->accept(); 
while(<$new_socket>) { 
print $_; 
} 
close($socket);

Client.pl

use strict; 
use warnings; 
use IO::Socket; 
my $socket = new IO::Socket::INET ( 
PeerAddr => 'localhost', 
PeerPort => '45655', 
Proto => 'tcp', 
); 
die "Could not create socket: $!n" unless $socket; 
print $socket "Hello this is socket connection!n"; 
close($socket);

Примітка:

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

Що таке модулі та пакети Perl

Модулі та пакети тісно пов’язані один з одним і незалежні. Пакет: пакет Perl також відомий як простір імен і містить усі унікальні змінні, які використовуються як хеші, масиви, скаляри та підпрограми. Модуль: Модуль — це набір багаторазового коду, у якому ми пишемо підпрограми. Ці модулі можна завантажити в програми Perl, щоб використовувати підпрограми, написані в цих модулях.

Що таке модулі Perl?

Стандартні модулі будуть встановлені під час інсталяції Perl на будь-якій системі. CPAN: Комплексний Perl Archive Network – глобальне сховище модулів Perl. Наші власні налаштовані модулі Perl, які ми можемо написати. По суті, модуль, завантажений у будь-якому сценарії, експортує всі свої глобальні змінні та підпрограми. Ці підпрограми можуть безпосередньо викликатися так, ніби вони були оголошені в самому сценарії. Модулі Perl можуть бути записані з розширенням .pm до назви файлу Наприклад: Foo.pm. Модуль можна написати за допомогою «пакета Foo» на початку програми.

Базовий модуль Perl:

#!/usr/bin/perl 
package Arithmetic; 
sub add 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b);
} 
sub subtract 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b); 
} 
1;

Немає результату

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

Ми можемо завантажити модуль Perl за допомогою require або use будь-де в коді. Основна різниця між вимогою та використанням полягає в тому, що потрібно завантажувати модуль під час виконання та використовувати завантаження під час компіляції.

#!/usr/bin/perl
require
Arithmetic;
print Arithmetic::add(5,6);
print Arithmetic:: subtract (5,6);

Тут, у наведеному вище прикладі, ми отримуємо доступ до підпрограм, використовуючи повне ім’я модуля.

Ми також можемо отримати доступ до пакета за допомогою 'use Arithmetic'.

Експортер:

Цей модуль має типову функцію імпорту методів.

#!/usr/bin/perl 
package Arithmetic; 
require Exporter; 
@ISA= qw(Exporter); # This is basically for implementing inheritance. 
@EXPORT = qw(add); 
@EXPORT_OK = qw(subtract); 
sub add 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b); 
} 
sub subtract 
{ 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b);
 } 
1;

Масив @EXPORT можна використовувати для передачі списку змінних і підпрограм, які за замовчуванням буде експортовано до виклику модуля.

Масив @EXPORT_OK можна використовувати для передачі списку змінних і підпрограм, які будуть експортовані на вимогу, де користувач має вказати під час завантаження модуля.

#!/usr/bin/perl 
use 
Arithmetic qw(subtract); 
print add(5,6); 
print subtract (5,6);

За замовчуванням підпрограма add буде експортована. Метод віднімання не буде експортовано, якщо його не вказано під час завантаження модуля.

Об'єктно-орієнтоване програмування на Perl

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

Створити клас

Ми вже знаємо, як створювати модулі з попередньої теми. Метою класу є зберігання методів і змінних. Модуль Perl матиме підпрограми, які є методами. Нам потрібно отримати доступ до цих об’єктів змінних і підпрограм.

Конструктор Perl

Конструктор у Perl — це метод, який виконує та повертає нам посилання з іменем модуля, позначеним тегом посилання. Це називається благословенням класу. Ми використовуємо певну змінну для благословення класу perl, яка є bless.

#!/usr/bin/perl 
package Arithmetic; 
sub new 
{ 
my $class=shift;
my $self={}; 
bless $self, $class; 
return $self; 
} 
sub add 
{ 
my $self= shift; 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a+$b); 
}
sub subtract 
{ 
my $self= shift; 
my $a=$_[0]; 
my $b=$_[1]; 
return ($a-$b); 
} 
1;

Новий метод, який використовується як конструктор для класу. Цей конструктор створить для нас об’єкт і повернеться до сценарію, який викликає цей конструктор.

#!/usr/bin/perl
use Arithmetic;
my $obj= Arithmetic->new(); 
my $result= $obj->add(5,6); 
print "$result";
$result = $obj->subtract(6,5);
print "$result";

Тут нам потрібно зрозуміти, як створено об’єкт. Щоразу, коли ми намагаємося створити об’єкт для класу, нам потрібно використовувати повне ім’я класу. Припустимо, якщо клас perl знаходиться в якомусь lib\Math\Arithmetic.pm. І, якщо ми хочемо отримати доступ до цього класу perl з каталогу lib, ми повинні надати повний шлях до класу під час виклику сценарію.

використовуйте lib::Math::Arithmetic;

my $obj = lib::Math::Arithmetic->new();

Ось як відбувається створення об'єкта в Perl.

@INC:

Як сценарій Perl дізнається, де існує бібліотечний модуль? Perl знає лише про поточний каталог сценарію та шлях до вбудованої бібліотеки Perl. Кожного разу, коли ми використовуємо модуль Perl, який не розташований у поточному каталозі чи шляху до бібліотеки Perl, сценарій завжди виникатиме помилка. Щодо @INC, це масив, який містить усі шляхи до каталогів, де він має шукати модулі Perl. Спробуйте виконати цю команду і подивіться, що буде результатом.

perl –e "print @INC"

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

push(@INC, "PATH TO YOUR MODULE");

Зробіть це першим рядком коду. Це підкаже вашому перекладачу подивитися на цей Шлях. або використання

lib Arithmetic; # List here is your Perl Module location

Деструктор Perl

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


PERL V/s Shell Scripting

Введення в програмування на PERL

  • Програмування на Perl не спричиняє проблем з переносимістю, що є поширеним явищем при використанні різних оболонок у сценаріях оболонки.
  • Обробка помилок дуже проста в Perl
  • Ви можете легко писати довгі та складні програми на Perl завдяки його величезності. Це на відміну від Shell, яка не підтримує простори імен, модулі, об’єкти, успадкування тощо.
  • Shell має менше бібліотек для багаторазового використання. Нічого в порівнянні з CPAN Perl
  • Shell менш безпечний. Він викликає зовнішні функції (такі команди, як mv, cp тощо, залежать від використовуваної оболонки). Навпаки, Perl виконує корисну роботу, використовуючи внутрішні функції.

Як PERL використовується в автоматизованому тестуванні

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

Тестування зберігання

Тестування сховища за допомогою Perl

Що таке зберігання? Дані, що зберігаються у файлах.

Припустимо, у нас є сховище Тестовий випадок де ми повинні записати дані в один розділ, прочитати їх і перевірити, що дані записані правильно.

Це можна зробити вручну, але чи може ручний тестер виконати те саме 10000 XNUMX разів? Це буде кошмар! Нам потрібна автоматизація

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

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

Багато компаній, таких як HP, Dell, IBM і багато виробників серверів використовують Perl як інтерфейс для перевірки функціональності в доменах зберігання та мережі. NetApp є однією з таких компаній, яка повністю працює над системою зберігання даних і використовує Perl як мову програмування для автоматизації тестових випадків.

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

Тестування сервера та мережі:

Тестування сервера та мережі за допомогою Perl

Тестування сервера та мережі за допомогою Perl

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

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

Виконання цього завдання вручну для всіх 100 хостів буде кошмаром. Але ми можемо легко автоматизувати це за допомогою PERL

Спроектуйте кроки для досягнення вищезазначеної автоматизації за допомогою PERL

  1. Візьміть із файлу інформацію про хост, наприклад (IP, ім’я користувача та пароль).
  2. Використовуйте Net::SSH2 для підключення до кожної системи та встановлення каналу для виконання команд.
  3. Виконайте набір необхідних команд, наприклад: ls, dir, ifconfig, ps тощо.
  4. Перезавантажте систему.
  5. Зачекайте 10 хвилин, поки система запуститься.
  6. Виконайте пінг системи за допомогою модуля Net::Ping і роздрукуйте статус.

Ми закодуємо наведений вище сценарій.

Давайте візьмемо файл під назвою Input.txt, який буде зберігати повну інформацію про всі хости, до яких нам потрібно підключитися та виконати команду.

Input.txt

192.168.1.2 root пароль

192.168.1.3 root пароль

192.168.1.4 корінь root123

HostCheck.pl

use Net::SSH2;
use Net::Ping;
use strict;
use warnings;
my $ping = Net::Ping->new();    # Creating object for Net::Ping
my $SSHObj = Net::SSH2->new();  #Creating object for Net::SSH2
open( FH, "Input.txt" );        # Opening file and placing content to FH
my @hosts = <FH>;
my $ip;
my @ips;
foreach (@hosts)
{
    if ( $_ =~ /(.*)\s+(\w+)\s+(.*)/ )    #Regex to get each info from file
    {
        $ip = $1;
        my $user = $2;
        my $password = $3;
        $SSHObj->connect($ip);
        print "Connecting to host -- $ip --Uname:$user --Password:$password\n";
        my $status = $SSHObj->auth_password( $user, $password );
        print "$status\n";
        die("unable to establish connection to -- $ip") unless ($status);
        my $shell = $SSHObj->channel();
        print "$_\n" while <$shell>;
        $shell->blocking(1);
        $shell->pty('tty');
        $shell->shell();
        sleep(5);
        #Executing the list of command on particular host. Can be any command
        print $shell "ls \n";
        print "$_\n" while <$shell>;
        print $shell "ps \n";
        print "$_\n" while <$shell>;
        print $shell "dir \n";
        print "$_\n" while <$shell>;
        print $shell "init 6\n";    #rebooting the system
        push( @ips, $ip );
    }
}
sleep 600;
foreach (@ips)
{
    if ( $ping->ping($_) )
    {
        print "$_ is alive.\n" if $ping->ping($_);
    }
    else
    {
        print "$_ is not still up --waiting for it to come up\n";
    }
}

Веб-тестування

Perl не обмежується лише тестуванням сховищ і мережі. Ми також можемо виконувати веб-тестування за допомогою PERL. WWW-механізувати один модуль використовується для веб-тестування. По суті, він не запускає жодного браузера для перевірки функціональності веб-програми, а використовує вихідний код HTML-сторінок.

Ми також можемо проводити тестування на основі браузера за допомогою Selenium IDE, RC, веб-драйвер. Perl підтримується для Selenium.

\n”; #this зберігає рядок, що залишився після того, як буде виконано збіг скоромовок.
друкувати "