Учебное пособие по Perl: переменная, массив, хеши с примером программирования

Что такое Перл?

Perl — это интерпретируемый динамический язык программирования высокого уровня общего назначения. Термин Perl означает «Практический язык извлечения и отчетности», хотя аббревиатуры Perl не существует. Он был представлен Ларри Уоллом в 1987 году. Язык Perl был специально разработан для редактирования текста. Но теперь он широко используется для различных целей, включая системное администрирование Linux, сетевое программирование, веб-разработку и т. д.

Обзор языков программирования

Давайте скажем это по-простому. Хотя компьютеры понимают только 0 и 1 (двоичный язык/машинный язык/[язык низкого уровня]), нам, людям, очень сложно программировать на двоичном языке. Perl — это язык программирования, который использует элементы естественного языка, слова, которые используются в обычном английском языке и, следовательно, его легче понять людям.язык высокого уровня]. Теперь есть проблема; компьютеры не могут понимать языки высокого уровня, которые мы, люди, легко понимаем. Для этого нам нужно что-то, что может перевести язык высокого уровня на язык низкого уровня. Здесь нам на помощь приходит переводчик. Интерпретатор — это часть программного обеспечения, которая преобразует программу, написанную на языке высокого уровня, в язык низкого уровня, чтобы компьютер мог понять и выполнить инструкции, написанные в программе. Следовательно, Perl является интерпретируемый язык программирования.

Где используется Perl?

Возможности языка сценариев Perl можно реализовать во многих областях. Наиболее популярное использование Perl — веб-разработка. Perl также используется для автоматизации многих задач на веб-серверах и других задач администрирования. Он может автоматически генерировать электронные письма.mailсистемы очистки. Perl по-прежнему используется по своему первоначальному назначению, то есть для извлечения данных и создания отчетов. Он может создавать отчеты об использовании ресурсов и проверять наличие проблем безопасности в сети. По этой причине Perl стал популярным языком, используемым в веб-разработке, сетевых технологиях и биоинформатике. Помимо всего этого, Perl также можно использовать для программирования CGI.

Perl также можно использовать для создания и манипулирования изображениями. Помимо этого, работа в сети через telnet, FTP и т. д., создание графического интерфейса пользователя, электроника СБИС и создание mail фильтры для уменьшения спама — вот некоторые варианты использования Perl.

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

Приложения языка программирования Perl

Приложения языка программирования Perl

Зачем использовать Perl?

Это правда, что существуют и другие языки программирования, которые можно использовать для выполнения всего того, что было сказано выше, тогда почему вам следует использовать именно Perl? Perl очень легко выучить, особенно если у вас есть опыт компьютерного программирования. Perl был разработан так, чтобы людям было легко писать и понимать его, а не упрощать его обработку компьютерами. Он использует регулярные выражения. Его естественный стиль языка отличается от других языков программирования, использующих определенную грамматику и синтаксис; поэтому Perl очень гибок и не навязывает вам какой-либо особый способ обдумывания решения или проблемы. Perl чрезвычайно портативен. Он может работать в любой операционной системе, в которой установлен интерпретатор Perl, поэтому он не зависит от платформы. Все операционные системы Linux поставляются с установленным Perl, поэтому вы можете начать кодирование Perl в Linux из box. Это не похоже на сценарии 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-скрипт.
  • Просто и легко программировать и понимать.
  • Он объектно-ориентирован.
  • Библиотека CPAN упрощает разработку Perl (мы узнаем об этом больше later в теме).
  • Используется в веб-разработке в основном для платежных шлюзов.
  • Используется в автоматизации и для тестирования большей части оборудования, связанного с сетью и хранилищем.
  • Поддержка графического интерфейса минимальна по сравнению с другими языками программирования.
  • Вам нужно обратиться к complex библиотечные модули, которые не так-то просто понять (не пугайтесь, когда вы научитесь это делать, все станет легко).
  • Понимание complex Выкройки требуют опыта.

Давайте начнем

Имея достаточные знания об истории Perl и основных понятиях компьютерного программирования, необходимых для кодирования на Perl, пришло время погрузиться и начать работу с Perl. Следующая глава научит вас, как настроить Perl в вашей системе и подготовиться к путешествию по программированию на Perl. В этом руководстве по написанию сценариев Perl в качестве ОС, которую студенты будут использовать для программирования на Perl, будет использоваться Linux.

Загрузите и установите Perl – Windows, Mac и Linux

Как получить Перл?

Хорошие новости оно у тебя наверняка есть!

Но если вы не можете найти его в своей системе, вы все равно можете получить его бесплатно.

Чтобы узнать, установлен ли у вас Perl, зайдите в командную строку и введите: perl -v

Как скачать Перл

Команда отобразит версию 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 установить Perl

И расслабься. Об остальном позаботятся. Просто убедитесь, что у вас есть активное подключение к Интернету.

Обновите PERL в Linux

Обновите PERL в Linux

Установите Perl для Windows:

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

Шаг 1: После загрузки установщика и начала установки вы увидите окно ниже. Нажмите «Далее», чтобы продолжить.

Как установить Perl на Windows

Шаг 2: Примите лицензионное соглашение, чтобы продолжить установку.

Как установить Perl на Windows

Шаг 3: Ниже приведены различные пакеты, которые будут установлены. По умолчанию будут выбраны все. Единственное отличие — это PPM (менеджер пакетов Perl). Это утилита, предоставляемая 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, так и в Linux. Windows, так как в эту установку не будет включено много файлов библиотеки. Вам необходимо вручную установить их. Вы можете установить их вручную, используя CPAN (Comprehensive Perl Archive Network) или любой PPM, который работает только для Perl. windows. Но эти файлы не являются обязательными для начала кодирования на Perl.

Помимо этого windows настройка, которую вы могли бы использовать Windows Новая функция подсистемы Linux 10 завершена windows и используйте его для запуска кода Perl

Первая программа Perl

Hello world!

Пример Perl: Привет, мир

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

Не волнуйтесь, если вы не понимаете этот текст. Скоро все станет ясно. Давайте посмотрим на это построчно:

#!/usr/bin/perl		

Это указывает операционной системе выполнить этот файл с помощью программы, расположенной в /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. Это означает комплексный Perl. Archive Network и содержит огромное количество модулей Perl, которые вы можете использовать. Это сообщество или сеть большого количества разработчиков, которые предоставляют такие модули. Установив поддержку модулей CPAN в свой модуль Perl, вы сможете использовать модули CPAN и упростить свою работу. Большинство модулей Perl написаны на Perl, некоторые используют XS (они написаны на C), поэтому требуется компилятор C (эту настройку легко получить — не паникуйте. Модули могут зависеть от других модулей (почти всегда от CPAN) и невозможно установить без них (или без определенной их версии).Стоит внимательно прочитать документацию по приведенным ниже параметрам.Многим модулям CPAN теперь требуется последняя версия Perl (версия 5.8 или выше).Установите cpanminus скрипт для получите, распакуйте, соберите и установите модули из CPAN, чтобы упростить установку других модулей (вы будете нам благодарны later). Установить App-cpanminus perl-модули, в командной строке введите:

cpan App::cpanminus

cpan App::cpanminus Убедитесь, что у вас есть подключение к Интернету во время загрузки и установки модулей Perl.

Установка модулей cpan minus

Теперь установите любой модуль:

cpan –i <Module_Name>.		

Давайте посмотрим пример установки модуля File::Data(это интерфейс для доступа к данным файла).

Установка модулей cpan minus

Переменная 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. Номера
  2. Струны

Номера:

В этом типе скалярных данных мы могли бы указать:

  • целые числа, просто это целые числа, например 2, 0, 534
  • числа с плавающей запятой, это действительные числа, например 3.14, 6.74, 0.333

Числовые переменные в Perl

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

Целочисленные литералы:

Он состоит из одной или нескольких цифр, которым может предшествовать плюс или минус и содержать символы подчеркивания.

Примеры Перла:

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

Как видите – ничего особенного. Но поверьте, это самый распространенный тип скаляров. Они повсюду.

Литералы с плавающей запятой:

Он состоит из цифр, необязательно минуса, десятичной точки и показателя степени.

Примеры Перла:

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

Примеры Перла:

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 кавычки строковых литералов

Строковые литералы в одинарных кавычках

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

Примеры Перла:

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

Вывод:

это $num

Здесь из-за одинарных кавычек значение $num не берется, а к значению $txt добавляются литеральные символы «$», «n», «u» и «m».

Doubleстроковые литералы в кавычках

Double Кавычки используются для заключения данных, которые необходимо интерполировать перед обработкой. Это означает, что экранированные символы и переменные не просто вставляются в текст. later операций, но оцениваются на месте. Escape-символы можно использовать для вставки новой строки, табуляции и т. д.

Примеры Перла:

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

Вывод:

это 7

Здесь из-за double значение кавычки $num добавляется к значению $txt

Double-кавычки интерполируют скалярные переменные и переменные массива, но не хэши. С другой стороны, вы можете использовать double-кавычки для интерполяции фрагментов как массивов, так и хешей.

Таинственный \n

Рассмотрим следующееwing программа

Примеры Перла:

print "hello \n";

Вывод:

Здравствуйте

Perl отображает не просто «привет\n», а только «привет». Почему? Потому что «\n» — это специальный знак и означает, что вы хотите перейти на новую строку при отображении текста в вашей программе. напечатайте «привет\n новая строка»; Следующий вопрос – есть ли еще какие-то особые знаки? Да, они! Но не волнуйтесь — всего несколько. Проверьте таблицу ниже

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

Я знаю, их не «всего несколько»… Но поверьте мне, вы должны знать всего лишь

Строковые переменные

Это та же операция, которую мы видим при присвоении чисел. 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» с помощью «.» оператор.

В конце…

Преобразование между числами и строками:

Как вы знаете, Perl автоматически преобразует числа в строки по мере необходимости. Откуда Perl узнает, что нам нужно прямо сейчас? Тут все просто - все зависит от оператора (поговорим об операторах later, теперь просто признайте, что существует множество операторов, разных для чисел и строк.) Если оператор ожидает число, Perl будет использовать это значение как число. Если оператор ожидает строку, Perl будет использовать это значение как строку. Другими словами, вам не нужно беспокоиться о таком преобразовании. Короткий пример и все должно быть понятно:

Примеры Перла:

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

Вывод:

71

значение $string преобразуется в целое число и добавляется к значению $number.

Результат сложения, 71, присваивается переменной $result.

Область действия переменной – модификаторы доступа

Мы можем объявить скаляр в любом месте программы. Но вам нужно указать модификатор доступа

Существует 3 типа модификаторов.

  1. my
  2. локальным
  3. наши

My: Используя это, вы можете объявить любую переменную, специфичную для блока. т.е. внутри фигурных скобок.

#!/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, вы можете фактически изменить значение этой переменной с помощью повторное объявление той же переменной с использованием ключевого слова local без изменения исходного значения переменной, равного 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.

мой @array;

Вот как мы определяем массив в 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 элемент массива, как мы собираемся это сделать.

$array [4] = 'е';

Последовательный массив

Последовательные массивы — это массивы, в которых данные хранятся последовательно. Предположим, вы хотите сохранить в массиве от 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

Функция разделения разбивает содержимое строки на массив на основе предоставленного ей разделителя. Эта функция также удалит из строки разделитель, в данном случае это «а»;

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-е место при отмене смены: Пт Пн Вт Ср Чт

4-е место по популярности: пт, понедельник, вторник, среда.

5-е число в смену: Пн Вт Ср

Перл-хеши

Зачем нам нужен Хэш?

Мы уже узнали о скалярах и массивах в предыдущих разделах.

Что именно делают скаляры? Он хранит только целые числа и строки.

Что именно делают массивы? Это набор скаляров, в котором вы получаете доступ к каждому элементу массива с помощью индексов. Но стоит ли использовать массив, когда у вас сотни и тысячи записей? Мы забудем, какой индекс имеет какое значение. Чтобы преодолеть эту ситуацию, у нас есть что-то вроде хеша Perl.

Что такое хэши?

Хэш также может содержать столько скаляров, сколько может содержать массив. Единственная разница в том, что у нас нет индекса, а есть ключи и значения. Хэш можно объявить, начиная с %, за которым следует имя хеша. Давайте посмотрим на примере, как мы можем определить хэш Perl и как отличить его от массива.

Рассмотрим пример трех человек, и их возраст представлен в массиве.

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

Вывод:

Саинатх33Кришна24Шрути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.

Вывод:

Sainath33Krishna24Shruthi25Sainath33Krishna24Shruthi25

Теперь мы объявили хеш, отлично!! Но как нам получить к нему доступ или распечатать его? Доступ к каждому элементу хеша должен осуществляться с помощью связанного с ним ключа, которому будет присвоено значение. Таким образом, между каждым ключом и значением в хеше существует сопоставление «один-один».

Чтобы напечатать возраст любого человека, вам просто нужно запомнить имя этого человека.

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 $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

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 Иначе Если

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";
    }

Вывод:

Внутри первого блока else — значение 1.

Выполните тот же код, изменив значение $a; остальное вы можете узнать.

Perl, если только

У вас уже есть представление о том, что делает if (если условие истинно, блок кода будет выполнен). Если не противоположно if, если блок кода будет выполнен, если условие ложно.

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

Вывод:

Внутри первого блока else — значение 1.

Угадайте, какой будет результат. Ты прав!!!!!. Результатом будет оператор печати блока else. Поскольку условие в условии, если блок кода не является истинным, помните, что если блок кода не будет выполнен, только если условие ложно. Измените значение $a и выполните код, вы увидите разницу.

Perl Использование if

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

Вывод:

Внутри блока else

Использование, если

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

Вывод:

Внутри, если не блокировать

Циклы Perl — управляющие структуры

Perl поддерживает структуры управления, аналогичные другим языкам программирования. Perl поддерживает четыре типа управляющих структур: foreach, while и Until. Мы используем эти операторы для многократного выполнения некоторого кода.

Для цикла 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.

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

Вывод:

1n

2n

3n

4n

5n

6n

7n

8n

9n

10n

Перл Форич

Оператор foreach можно использовать так же, как и for; Основное отличие в том, что у нас нет никакой проверки условий и приращения.

Давайте возьмем тот же пример с 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(). Keys — это встроенная функция Perl, с помощью которой мы можем быстро получить доступ к ключам хеша. Как насчет ценностей? Мы можем использовать функцию значений для доступа к значениям хеша.

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 представляет собой структуру управления, в которой блок кода будет выполняться до тех пор, пока условие не станет истинным.

Блок кода завершится только в том случае, если условие ложно.

Давайте рассмотрим пример цикла 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, блок кода будет выполняться только в том случае, если условие a while истинно.

Perl-во время выполнения

Цикл 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 до

Блок кода до тех пор, пока не будет аналогичен блоку кода в условном операторе. Здесь блок кода будет выполняться только в том случае, если условие в блоке будет ложным.

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

Вот проблема, которая потребует ввода данных от пользователя и не завершится до тех пор, пока не будет указано имя, отличное от «sai».

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

Вывод:

Введите любое имя Сай

Perl делать-пока:

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');

Вывод:

Введите любое имя Говард

Введите любое имя Шелдон

Введите любое имя Сай

Выполните примеры кодов while, do- while, до и do-until, чтобы увидеть разницу.

Перл-оператор

Что такое оператор?

Операторы на компьютерном языке обозначают действие, которое может быть выполнено с некоторым набором переменных или значений, понятных компьютеру. Perl вобрал в себя большинство операторов языка C. В Perl много операторов по сравнению с другими языками программирования. Операторы подразделяются на арифметические, логические, операторы отношений и операторы присваивания.

Арифметические операторы:

Арифметические операторы — это операторы, которые можно использовать для выполнения некоторых основных математических операций. Эти арифметические операторы представляют собой бинарные операторы, которым для выполнения базовой операции нам нужны два аргумента. Мы также можем использовать унарные операторы для других базовых операций; вы можете увидеть разницу в примерах ниже.

оператор Описание Пример

+

Операция сложения, используемая для добавления двух значений или переменных.

холдинговые ценности

$х=5+6; # или

$у=6;

$z=$x+$y;

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

$х=6-5; # или

$у=6;

$z=$x-$y;

*

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

$х=6*5; # или

$у=6;

$z=$x*$y;

/

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

$х=36/6; # или

$у=6;

$z=$x/$y;

**

Экспоненциальный оператор, используемый для предоставления экспоненты и получения значения.

Пример: 22 = 43 = 27

$х=5**5; # или

$ х = 4;

$у=2;

$z=$x**$y;

%

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

$х=5%2; # или

$ х = 10;

$у=2;

$z=$x % $y;

++

Оператор унарного сложения для увеличения значения переменной на 1

$ х = 5;

$ x ++;

Or

++$х;

-

Оператор унарного вычитания для уменьшения значения переменной на 1

$ х = 5;

$х–; # пост-декремент

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

Муль из 10 и 2 равно 20

Деление 10 и 2 равно 5

Опыт 10 и 2 равен 100

Мод 10 и 2 равен 0

Операторы присваивания:

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

оператор Описание Пример

+=

Оператор сложения, используемый для добавления и присвоения значения одной и той же переменной.

$ х = 4;

$х+=10;

-=

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

$ х = 4;

$х-=10;

*=

Оператор умножения, используемый для добавления и присвоения значения одной и той же переменной.

$ х = 4;

$х*=10;

/=

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

$ х = 4;

$х/=10;

знак равно

Экспоненциальный оператор, используемый для получения показателя степени и присвоения значения одной и той же переменной.

$ х = 4;

$х**=10;

%=

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

$ х = 10;

$х%=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

Суб= 10

Мул = 50

Дел = 10

Логические и реляционные операторы:

Perl использует логические операторы для сравнения чисел и строк. Большую часть времени логические операторы используются в условных операторах.

Логические и реляционные операторы в Perl

Логические и реляционные операторы в Perl

оператор Описание

== или уравнение

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

!=Или нэ

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

> или GT

Оператор проверял,

A больше, чем B

<или лт

Оператор проверял,

A меньше B

>= или ge

Оператор проверял,

A больше или равно B

<= или ле

Оператор проверял,

A меньше или равно B

|| или или

Оператор, используемый для проверки того, что A или B удерживает значение.

&&или и

Оператор, используемый для проверки того, что 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

Вы можете увидеть примеры логических операторов в later раздел.

Специальные переменные Perl

Что такое специальные переменные Perl?

Специальные переменные в Perl — это те, которые имеют заранее определенное значение. Эти переменные обозначаются либо настоящим именем, либо символами пунктуации. У нас есть специальная переменная для всех переменных, поддерживаемых Perl, таких как специальные скалярные переменные, специальные переменные массива, специальные переменные хеширования. Большинство специальных переменных, которые мы используем, являются скалярными.

Когда мы хотим использовать специальную переменную с ее именем, нам нужно загрузить модуль Perl «use English», чтобы явно сообщить интерпретатору 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

Значение по умолчанию — ноль; это используется для очистки вывода buffer после каждой записи() или печати().

$$

Будет хранить номер запущенного процесса интерпретатора Perl.

$?

Код состояния: канал и системный вызов. Возвращаемый статус выполненной команды.

$&$MATCH

При использовании в регулярных выражениях он будет содержать строку последнего успешного совпадения с шаблоном.

$`$ПРЕМАТЧ

При использовании в регулярных выражениях он будет содержать строку, которой предшествует последнее успешное совпадение с шаблоном.

$'$POSTMATCH

При использовании в регулярных выражениях он будет содержать строку, за которой следует последнее успешное совпадение с шаблоном.

$+$LAST_PAREN_MATCH

Содержит строку последней скобки, которая соответствует последнему поиску по шаблону.

$

1 доллар, 2 доллара, 3 доллара…. Содержит значения шаблона, сопоставленные по порядку.

$[

Первый индекс: Массив, подстрока.

$]

Версия Перла.

$ ”

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

$;

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

$!

В числовом контексте печатает номер ошибки. В строковом контексте выведите ошибку.

$@

Будет хранить информацию о синтаксических ошибках, используемую при использовании eval().

$<

Содержит реальный UID (идентификатор пользователя) процесса, выполняющего скрипт.

$>

Содержит эффективный UID процесса, выполняющего сценарий.

$(

Содержит реальный GID (идентификатор группы) процесса, выполняющего скрипт.

$)

Содержит эффективный GID процесса, выполняющего сценарий.

$^D$ОТЛАДКА

Содержит текущее значение флагов отладки.

$ ^ C

Сохраняет текущее значение флага, когда используется ключ командной строки –c.

$^Ф

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

$^I$INPLACE_EDIT

Содержит значение переключателя командной строки –i.

$^М

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

$^O$OSNAME

Информация об операционной системе сохраняется. «Linux» для систем Linux, «mswin32» для Windows систем.

$^T$BASETIME

Время выполнения скриптов в секундах.

$^W$ВНИМАНИЕ

Текущее значение ключа командной строки –w. Предупреждающий переключатель.

$ ARGV

Имя текущего файла, если используется <>.

Специальные переменные массива:

Технология Описание

@ИНК

Содержит список путей, по которым можно просмотреть модули или сценарии библиотеки Perl во время выполнения текущего сценария. Этот @INC используется операторами use и require для поиска по этим путям библиотечных модулей.

@АРГВ

Сохраняет переданные аргументы командной строки.

@_

Используется в подпрограммах при передаче параметров в подпрограммы.

@F

Это массив, в котором сохраняются входные строки при автоматическом разделении –a (используется переключатель командной строки).

Специальные переменные хеширования:

Технология Описание

% INC

Имя файла будет ключом; значения будут путем к этим файлам. Используется делать, использовать и требовать.

% ENV

Системные переменные окружения.

%СИГ

Обработчик сигналов.

Регулярное выражение Perl

Что такое регулярное выражение?

Регулярное выражение Perl достаточно эффективно сопоставляет шаблоны строк внутри оператора или группы операторов. Регулярные выражения в основном используются при синтаксическом анализе текста, сопоставлении с образцом и многом другом в зависимости от требований. У нас есть определенные операторы, которые специально используются при связывании шаблонов регулярных выражений =~ и !~. Это операторы проверки и присваивания.

Операторы регулярных выражений

Операторы регулярных выражений в Perl

Операторы регулярных выражений в Perl

  • Perl Match — м//
  • Заменитель Perl – s///
  • Транслитерация Perl – tr///

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

Голец Смысл

\

Специальное предложение или цитата

*

Соответствует 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 совпадение по регулярному выражению относится к любому символу, включая пробел.

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

Рассмотрим пример строки из нескольких слов, цифр и специальных символов, например: «Привет всем, это мой номер: +91-99298373639»;

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

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

Операторы сопоставления Perl

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

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

Вывод:

правда

Этот небольшой код выведет «истину», поскольку сопоставление с шаблоном Perl идентифицирует строку в переменной. По сути, Perl ищет текст, указанный в //, по всей строке, даже если он находит в одном месте, он возвращает «истину». Шаблон может находиться в любом месте переменной. Мы можем попробовать заменить =~ на !~, чтобы увидеть разницу между этими двумя операторами.

Оператор замены Perl

Этот оператор можно использовать для searching и заменить любой символ нулевым или каким-либо другим символом.

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

Вывод:

виолончель, как дела?

Примечание. На самом деле мы можем использовать любую строку, соответствующую шаблону, как мы это делали ранее в этом операторе подстановки. Здесь мы использовали «gi», g-глобально, i-игнорировать регистр.

Оператор перевода Perl

Это похоже на замену, но здесь не используются регулярные выражения 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;
Режимы Описание

<

Читать

+<

Читает и пишет

>

Создает, записывает и усекает

+>

Чтение, запись, создание и усечение

>>

Записывает, добавляет и создает

+>>

Чтение, запись, добавление и создание

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

Мы увидим еще несколько примеров и других функций, которые помогут лучше понять файлы.

Перл Телль

Этот метод вернет текущую позицию FILEHANDLER в байтах, если указано, иначе он будет рассматривать последнюю строку как позицию.

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

Перл Поиск

Функция Seek аналогична системному вызову 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 используется для удаления файла.

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

Чтобы проверить, существует ли файл и имеет ли нулевой размер (всегда ложно для каталогов)

-f

Чтобы проверить, является ли запись обычным файлом

-d

Чтобы проверить, является ли запись каталогом

-l

Чтобы проверить, является ли Entry символической ссылкой

-S

Чтобы проверить, является ли Entry сокетом

-p

Чтобы проверить, является ли Entry именованным каналом («FIFO»)

-b

Чтобы проверить, является ли Entry специальным файлом блока (например, монтируемым диском)

-c

Чтобы проверить, является ли Entry специальным символьным файлом (например, устройством ввода-вывода)

-u

Чтобы проверить, установлен ли файл или каталог setuid

-g

Чтобы проверить, установлен ли файл или каталог, setgid

-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 — переданное значение

@_ — это специальная переменная массива, в которой хранятся аргументы, передаваемые подпрограммам.

Перл сдвиг

Мы также можем использовать ключевое слово «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;

Вывод:

Внутри подпрограммы2b1aПосле вызова подпрограммы2b1a

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-формат

Пример отчета:

================================================== =========================
Имя Адрес Возраст Телефон
================================================== =========================
Кришна Ченнаи 24 929309242
Шрути Ченнаи 24 929309232

Выше приведен пример отчетов, которые нам нужно распечатать таким же образом в Perl. Этого можно добиться, используя perl printf и perl. sprintф. Его можно эффективно реализовать с помощью формата.

Формат может быть объявлен следующим образом.

format FORMATNAME=FORMATLIST.

Здесь мы будем использовать особый метод write для печати данных на экране вывода или в файл.

Символ Описание

@

Используется для обозначения начала держателя поля.

>

Правильное выравнивание текста

<

Выравнивание текста по левому краю

|

Выравнивание по центру

#

Числовое, если указано несколько #. Предполагается как комментарий, если указан один #

.

Десятичная точка

^

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

~

Строка должна быть пустой, если переменная пуста

@*

Несколько строк.

($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

Писать код просто и легко. Проблема возникает, когда его необходимо поддерживать на later этапы. При написании кода необходимо соблюдать соответствующие рекомендации и стандарты кодирования. Perl также определяет определенные стандарты, которые будут полезны программистам при написании кода. Во время написания кода желательно загружать «строгое» и «модуль предупреждений». Каждый из этих модулей имеет свое значение. Strict заставит нас объявить переменную перед использованием, а также сообщит, присутствует ли в вашем коде какое-либо пустое слово. В качестве альтернативы можно использовать модуль предупреждений, передав опцию «-w» интерпретатору Perl в shebang. Предупреждения будут печататься на экране вывода.

#!/usr/bin/perl –w

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

  • Используйте модуль «строго» и «предупреждения».
  • Удалить переменную, которая не используется.
  • Имена переменных должны быть понятны другим пользователям. Пример: $name, @fileData и т. д.
  • При написании скрипта требуется документация.
  • Не кодируйте какие-либо значения жестко, а попытайтесь получить их динамически или попросить пользователя ввести их во время выполнения. (Путь к файлу, имена файлов).
  • Максимизируйте повторное использование кода. Попробуйте поместить многоразовый код в подпрограммы.
  • Это значит, что подпрограммам следует давать полные имена.
  • Подпрограммы необходимо писать с соответствующими комментариями и документацией.
  • Всегда инициализируйте переменные.
  • Всегда проверяйте коды возврата для системных вызовов. Открытие файла может произойти, а может и не произойти, наличие здесь кода возврата отобразит статус ошибки, если файл не существует.

    Пример: открыть(FH,

  • Подпрограмма всегда должна возвращать значение.
  • Откройте фигурную фигуру в той же строке.
  • Однострочный БЛОК может располагаться в одну строку с фигурными.
  • Используйте метки во время LOOPS, чтобы можно было легко выйти из цикла, когда это необходимо.
  • Используйте подчеркивание, когда длинные фразы слов записываются как имя переменной или подпрограммы.
  • Попробуйте использовать простое регулярное выражение при кодировании.

Идеальный пример со стандартами кодирования:

#######################################################################
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 или логического

Мы можем использовать логический оператор или для обработки ошибок при использовании системных вызовов.

например:

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

Перл Эвал

Функция 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 $@. 
}

Вывод:

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

{“

Выполнение C:\Users\XYZ\Text.pl прервано из-за ошибок компиляции.

Пример: оценка с использованием оператора die на Perl.

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

Вывод:

Пойман: Смерть во время дополнительного теста.

Использование Perl Попробуйте

Perl не поддерживает блоки кода try, catch иfinal, как другие языки программирования. Мы по-прежнему можем использовать их, загрузив внешний модуль Perl.

используйте Try::Tiny;

Используя это, мы можем поместить ваш код в блок try и отловить ошибку в блоке предупреждения.

Вместо $@, используемого в 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 и, наконец, таким образом.

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

поймать {# оператор }

наконец { # оператор };

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
};

Вывод:

Or

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

Вывод:

Программирование сокетов на Perl

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

Учебник по PERL для начинающих — Полное руководство

Сокет — это среда, посредством которой два компьютера могут взаимодействовать в сети, используя сетевой адрес и порты.

Предположим, A (Сервер) и B (Клиент) — две системы, которым приходится взаимодействовать друг с другом с помощью сокетов для запуска некоторых программ.

Чтобы реализовать это, нам нужно создать сокеты как в A (сервере), так и в B (клиенте), A будет в состоянии приема, а B — в состоянии отправки.

А (Сервер):

Здесь сервер желает получить соединение от B (клиента), выполнить некоторые задачи и отправить результат обратно B (клиенту). Когда мы выполняем код, операционная система в A пытается создать сокет и привязывает к этому сокету один порт. Затем он будет слушать отправителя, которым является B.

Б (Клиент).

Здесь клиент желает отправить некоторую программу из своей системы на А (сервер) для некоторой обработки. Когда мы выполняем код, операционная система в B пытается создать сокет для связи с A (сервером), B должен указать IP-адрес и номер порта A, к которому B желает подключиться.

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

Perl имеет собственный API, с помощью которого можно реализовать сокеты. Чтобы упростить задачу, существует множество модулей CPAN, с помощью которых мы пишем программы сокетов.

Операции сервера:

  • Создать сокет
  • Привязать сокет к адресу и порту
  • Прослушайте сокет по этому адресу порта
  • Примите клиентские подключения, которые пытаются подключиться, используя порт и IP-адрес сервера.
  • Выполнять операции

Клиентские операции:

  • Создать сокет
  • Подключитесь к серверу, используя адрес его порта.
  • Выполнять операции

Клиент-серверные операции в 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

ПирПорт

Удаленный порт или служба

ЛокальныйАддр

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

Localhost

Синоним для LocalAddr

локальный порт

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

Прото

Имя протокола (или номер)

Тип

Тип сокета

Слушать

Размер очереди на прослушивание

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

Установите SO_REUSEADDR перед привязкой.

Снова использовать

Установите SO_REUSEADDR перед привязкой.

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

Установите SO_REUSEPORT перед привязкой.

Трансляции

Установите SO_BROADCAST перед привязкой

Истек

Значение таймаута для различных операций

Мультидомед

Попробуйте все адреса для многодомных хостов.

блокирование

Определите, будет ли соединение находиться в режиме блокировки

Сервер.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);

Клиент.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. Модуль можно написать, используя «package 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 или использовать в любом месте кода. Основное различие между требованием и использованием заключается в том, что требуется загружать модуль во время выполнения и использовать загрузки во время компиляции.

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

Здесь, в приведенном выше примере, мы получаем доступ к подпрограммам, используя полное имя модуля.

Мы также можем получить доступ к пакету, используя «использовать арифметику».

Экспортер:

Этот модуль имеет стандартную функциональность импорта методов.

#!/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);

По умолчанию добавленная подпрограмма будет экспортирована. Метод Subtract не будет экспортирован, если он не указан при загрузке модуля.

Объектно-ориентированное программирование на 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.

@ИНК:

Как сценарий 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 V/s

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

  • Программирование на Perl не вызывает проблем с переносимостью, что часто случается при использовании разных оболочек в сценариях оболочки.
  • Обработка ошибок в Perl очень проста.
  • Можно писать долго и ком.plex программы на Perl легко из-за его обширности. В этом отличие от Shell, который не поддерживает пространства имен, модули, объекты, наследование и т. д.
  • В Shell меньше доступных библиотек многократного использования. Ничего по сравнению с CPAN Perl
  • Shell менее безопасен. Он вызывает внешние функции (такие команды, как mv, cp и т. д., зависят от используемой оболочки). Напротив, Perl выполняет полезную работу, используя внутренние функции.

Как PERL используется в автоматизированном тестировании

Perl широко используется в автоматизации. Возможно, это не лучший язык программирования в мире, но он лучше всего подходит для определенных типов задач. Давайте обсудим, где и почему используется Perl. Автоматизация тестирования.

Тестирование хранилища

Тестирование хранилища с использованием Perl

Что такое хранилище? Данные хранятся в файлах.

Предположим, у нас есть хранилище, связанное с хранилищем. Тестовый кейс где нам нужно записать данные в один раздел, прочитать их и проверить правильность записи данных.

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

Лучшим инструментом для автоматизации всего, что связано с хранилищем, является Perl из-за его методов обработки файлов. РЕГЭКС и мощный анализ файлов, который требует наименьшего времени выполнения по сравнению с другими языками программирования.

Зачем нам нужно тестировать хранилище? Подумайте о крупных центрах обработки данных, куда будут передаваться данные.wing непрерывно из одной системы в другую, при этом в секунду сохраняются тысячи записей. Очень важно проверить надежность такого механизма хранения.

Многие компании, такие как HP, Dell, IBM и многие производители серверов используют Perl в качестве интерфейса для тестирования функциональности в областях хранения и сети. NetApp — одна из таких компаний, которая полностью работает над хранилищем и использует Perl в качестве языка программирования для автоматизации тестовых случаев.

Если вы интересуетесь Perl Automation, было бы целесообразно узнать о концепциях хранения и сетей.

Тестирование сервера и сети:

Тестирование сервера и сети с использованием 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, в котором будет храниться полная информация обо всех хостах, к которым нам нужно подключиться и выполнить команду.

Ввод.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.

\н»; #это сохранит оставшуюся строку после завершения сопоставления с образцом.
Распечатать "