Что такое Perl?
Perl заменяет « Практический язык извлечения и отчетности », хотя для Perl нет авторизованной аббревиатуры. Вы можете создать свою собственную аббревиатуру, и никто не будет возражать. Perl был создан Ларри Уоллом в 1987 году, когда он работал в системе сообщений об ошибках и «AWK» — язык программирования, который он использовал для этой цели, мало ему помогал. Он по-прежнему главный архитектор и разработчик Perl. Если мы хотим определить Perl в одном предложении: Perl — это высокоуровневый интерпретируемый динамический язык программирования. Вам все это казалось по-гречески? (Если вы на самом деле не знаете греческий).
Perl — это язык программирования, специально разработанный для редактирования текста. В настоящее время он широко используется для различных целей, включая системное администрирование Linux, сетевое программирование, веб-разработку и т. Д.
Давайте изложим это простым способом. Хотя компьютеры понимают только 0 и 1 (двоичный язык / машинный язык / [низкоуровневый язык]), нам, человеку, очень сложно программировать на двоичном языке. Perl — это язык программирования, который использует элементы естественного языка, слова, которые используются в общем английском языке, и, следовательно, его легче понять людям [язык высокого уровня]. Теперь есть проблема; компьютеры не могут понимать языки высокого уровня, которые мы, люди, можем легко понять. Для этого нам нужно что-то, что может перевести язык высокого уровня на язык низкого уровня. Здесь переводчик приходит к нам на помощь. Интерпретатор — это часть программного обеспечения, которая преобразует программу, написанную на языке высокого уровня, в язык низкого уровня, чтобы компьютер мог понимать и выполнять инструкции, написанные в программе. Следовательно, Perl является интерпретируемым языком программирования .
- Где используется Perl?
- Загрузите и установите Perl — для Windows, Mac и Linux
- Переменная Perl
- Perl Array
- Perl Hashes
- Perl Условные операторы — если, если еще, если еще, если, если не
- Perl Loops — Управляющие структуры
- Perl Operator
- Perl Специальные Переменные
- Perl регулярное выражение
- Perl File I / O
- Perl подпрограмма
- Perl Format — получение идеального вывода
- Стандарты кодирования Perl
- Perl Обработка ошибок
- Программирование на Perl Socket
- Модули и пакеты Perl
- Объектно-ориентированное программирование на Perl
- Сценарии оболочки PERL V / s
- Как PERL используется в Automation Testing
Где используется Perl?
Мощь Perl может быть реализована во многих областях. Наиболее популярное использование Perl в веб-разработке. Perl также используется для автоматизации многих задач на веб-серверах и других задач администрирования, он может автоматически генерировать электронную почту и очищать системы. Perl по-прежнему используется для своей первоначальной цели — извлечения данных и генерации отчетов. Он может создавать отчеты об использовании ресурсов и проверять наличие проблем безопасности в сети. По этой причине Perl стал популярным языком, используемым в веб-разработке, сетях и биоинформатике. Помимо всего этого Perl также может быть использован для программирования CGI.
Perl также может быть использован для создания и управления изображениями. Помимо этой сети через telnet, FTP и т. Д., Создание графического пользовательского интерфейса, электроники VLSI и создание почтовых фильтров для уменьшения практики рассылки спама — это некоторые примеры использования Perl
Perl также известен реализацией практик ООП (объектно-ориентированного программирования) и поддерживает все формы наследования (простое, множественное и алмазное), полиморфизм и инкапсуляцию. Perl достаточно гибок для одновременной поддержки процедурных и ООП-практик. Perl также имеет дополнительные модули, которые позволяют вам писать или использовать / повторно использовать код, написанный на Python, PHP, PDL, TCL, Octave, Java, C, C ++, Basic, Ruby и Lua, в вашем скрипте Perl. Это означает, что вы можете комбинировать Perl с этими дополнительными языками программирования, а не переписывать существующий код.
Зачем использовать Perl?
Это правда, что есть другие языки программирования, которые можно использовать для выполнения всего, что было сказано выше, тогда зачем вам конкретно использовать Perl? Perl очень прост в изучении , особенно если у вас есть опыт программирования. Perl был разработан для того, чтобы людям было легче писать и понимать, а не обрабатывать их с помощью компьютеров. Он использует регулярные выражения. Это естественный стиль языка, отличающийся от других языков программирования, которые используют определенную грамматику и синтаксис; поэтому Perl очень гибок и не навязывает вам какой-либо конкретный способ придумать решение или проблему. Perl чрезвычайно портативный.Он может работать в любой операционной системе, в которой установлен интерпретатор Perl, поэтому он не зависит от платформы. Все операционные системы Linux поставляются с Perl, поэтому вы можете запускать Perl-кодирование в Linux из коробки. Это не похоже на сценарии Shell, где код меняется в зависимости от используемого дистрибутива Linux, делая его все менее и менее переносимым. Небольшие специфические задачи в Perl становятся очень легкими и быстрыми . В этом руководстве вы узнаете, как создавать небольшие быстрые программы для конкретных задач. Давайте рассмотрим простой пример классической программы Hello World, которая используется для начала изучения любого языка программирования, в основе которого лежит UNIX:
Пример: Perl Hello World
#!/usr/bin/perl print "Hello, world!";
Вывод:
Привет мир!
Приведенные выше две строки кода выведут Hello, world! Разве это не было слишком просто и быстро? Студенты со знанием C, C ++ будут знать, что для получения одинакового вывода на этих языках требуется гораздо больше строк кода.
Вы можете быть удивлены, почему Perl так популярен в Интернете . Это просто, так как большинство вещей, которые происходят в сети, относятся к TEXT, а Perl очень хорош в обработке текста. Если мы сравним Perl с любым из языков, то Perl будет лучшим языком, который хорош в обработке файлов, обработке текста и выводе отчетов
Одним из лучших преимуществ Perl является то, что он бесплатен
Сообщество Perl твердо убеждено, что программное обеспечение должно быть свободно доступным, свободно модифицируемым и свободно распространяемым. Несколько волонтеров из сообщества Perl стремятся сделать язык программирования как можно лучше.
Плюсы: | Минусы: |
---|---|
|
|
Давайте начнем
Обладая достаточными знаниями об истории Perl и базовых концепциях компьютерного программирования, необходимых для кодирования в Perl, пришло время погрузиться и начать работу с Perl. В следующей главе вы узнаете, как настроить Perl в своей системе и подготовиться к программированию на Perl. В этом руководстве Linux будет использоваться в качестве ОС, которую студенты будут использовать для кодирования на Perl.
Загрузите и установите Perl — для Windows, Mac и Linux
Как получить Perl?
Хорошие новости у вас, наверное, есть!
Но если вы не можете найти его уже в своей системе, вы все равно можете получить его бесплатно.
Чтобы узнать, установлен ли Perl, перейдите в командную строку и введите: perl -v
Команда покажет версию Perl, если она установлена. В этом случае версия v5.14.2. Но если нет … не паникуйте …
Обновление Perl в Linux:
Если вам нужно обновить версию Perl, просто введите одну строку команды
sudo apt-get установить Perl
И расслабься. Об остальном позаботятся. Просто убедитесь, что у вас есть активное подключение к Интернету.
Установите Perl для Windows:
Сначала скачайте Active Perl по этой ссылке . Выполните следующие действия, чтобы установить ActivePerl в системе Windows. Смотрите ниже скриншоты для того же.
Шаг 1: Как только вы загрузите установщик и начнете установку, вы увидите окно ниже, нажмите «Далее» для продолжения.
Шаг 2: Примите лицензионное соглашение для продолжения установки.
Шаг 3: Ниже приведены различные пакеты, которые будут установлены. По умолчанию все будет выбрано. Единственное, что отличается — это PPM (Perl Package Manager). Это утилита, предоставляемая Active Perl для установки внешних модулей или библиотек Perl в вашей системе. Нажмите Далее, чтобы продолжить.
Шаг 4: Это различные типы расширений Perl, которые можно использовать для Perl. В основном мы будем использовать .Pl, .Plx и .Pm для Perl. Модули Perl в основном используют .Pm в качестве своего расширения файла для ссылки на файл библиотеки. Выберите все параметры и нажмите кнопку «Далее».
Шаг 5: Нажмите кнопку «Установить», чтобы продолжить установку.
Шаг 6: После установки выполните команду ‘Perl –v’, чтобы проверить, успешно ли установлен Perl в вашей системе.
Существует множество вещей, которые необходимо обсудить для настройки среды Perl как в Linux, так и в Windows, так как в этой установке не будет много библиотечных файлов. Вам нужно установить их вручную. Вы можете установить их вручную, используя CPAN (Comprehensive Perl Archive Network) или PPM, который работает только для Perl Windows. Но эти файлы не являются обязательными для начала кодирования в Perl.
Помимо этой настройки Windows, вы можете использовать новую функцию Windows 10 в подсистеме Linux поверх Windows и использовать ее для запуска Perl-кода.
Первая Perl-программа
Hello world!
Пример Perl: Hello World
#!/usr/bin/perl -w #this is just a comment… print "Hello World";
Не волнуйтесь, если вы не понимаете этот текст. Все будет ясно в ближайшее время. Давай и посмотри на это по линии:
#!/usr/bin/perl
Это говорит операционной системе, что нужно выполнить этот файл с программой, расположенной в / usr / bin / perl. Некоторым IDE эта строка не нужна. Если это важно, вы должны написать здесь путь к вашему переводчику. Помните! Эта специальная строка должна быть в начале вашей программы и должна начинаться с #! использовать предупреждения; Это еще одна специальная команда, которая указывает интерпретатору отображать любые предупреждения, например -w, который активирует предупреждения глобально.
print "Hello World";
Инструкция печати записывает текст на экран. Точка с запятой в конце строки сообщает интерпретатору Perl, что инструкция завершена. Вы должны поставить точку с запятой в конце каждой инструкции в коде Perl. Обратите внимание на кавычку («). Это необходимо для инструкции печати. Сохраните приведенный выше скрипт как firstprog.pl
На винде
Если у вас установлена Strawberry, вы можете просто нажать Run. Вы также можете запустить интерфейс командной строки и написать на консоли:
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 минус
Модули — это набор кодов, которые используются для выполнения задач, выполняющих общие операции в нескольких программах. Если вы используете модули Perl, вам не нужно переписывать коды для выполнения той же операции. Perl может использовать такие внешние библиотеки кодов. Одна из лучших библиотек — это CPAN. Он означает «Комплексная сеть архивов Perl» и содержит огромное количество модулей Perl для использования. Это сообщество или сеть большого количества разработчиков, которые предоставляют такие модули. Установив поддержку модулей CPAN в свой модуль perl, вы можете использовать модули CPAN и упростить свою работу. Большинство модулей Perl написаны на Perl, некоторые используют XS (они написаны на C), поэтому требуется компилятор C (такую настройку легко получить — не паникуйте.Модули могут зависеть от других модулей (почти всегда от CPAN) и не могут быть установлены без них (или без конкретной версии). Стоит внимательно прочитать документацию по опциям ниже. Многие модули в CPAN теперь требуют последней версии Perl (версия 5.8 или выше). Установите скрипт cpanminus для получения, распаковки, сборки и установки модулей из CPAN, чтобы упростить установку других модулей (вы будете благодарны нам позже). УстановитьPerl-модули App-cpanminus , в командной строке введите:
cpan App::cpanminus
cpan App :: cpanminus Убедитесь, что у вас есть интернет-соединение во время загрузки и установки модулей perl.
Теперь установите любой модуль:
cpan –i <Module_Name>.
Давайте рассмотрим пример установки модуля File :: Data (это интерфейс для доступа к данным файла).
Переменная Perl
Теперь поговорим о переменных. Вы можете представить переменную как контейнер, который содержит одно или несколько значений. После определения имя переменной остается прежним, но значение или значения меняются снова и снова.
Существует 3 типа переменных:
Самые простые — это скаляры, и это наша тема сегодня
Скалярная переменная
Этот тип переменной содержит одно значение.
Его имя начинается со знака доллара и идентификатора Perl (это имя нашей переменной).
Соглашение об именовании
Если вы знакомы с другими языками программирования, вы должны знать, что существуют определенные правила именования переменных. Аналогично, в Perl есть три правила именования скаляров.
- Все скалярные имена будут начинаться с символа $. Легко запомнить, что каждое имя стоит перед префиксом $. Думайте об этом как о скаляре.
- Как и PHP. после первого символа $, который является специальным в Perl, допускаются буквенно-цифровые символы, то есть от a до z, от A до Z и от 0 до 9. Символ подчеркивания также допускается. Используйте подчеркивание, чтобы разделить имена переменных на два слова. `Но Первый символ не может быть числом««`
- Даже если числа могут быть частью имени, они не могут прийти сразу после $. Это означает, что первый символ после $ будет либо алфавитом, либо подчеркиванием. Те, кто пришел из 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 есть что-то одно, это скаляр. Скаляры можно читать с устройств, и мы можем использовать их в наших программах.
Два типа скалярных типов данных
- чисел
- Струны
Числа:
В этом типе скалярных данных мы можем указать:
- целые числа, просто это целые числа, как 2, 0, 534
- числа с плавающей точкой, это действительные числа, такие как 3,14, 6,74, 0,333
Примечание: в общем, интерпретатор Perl видит целые числа как числа с плавающей запятой. Например, если вы напишите 2 в своих программах, Perl увидит это как 2.0000
Целочисленные литералы:
Он состоит из одной или нескольких цифр, которым может предшествовать плюс или минус, и которые должны быть подчеркнуты.
Примеры Perl:
0; -2542; 4865415484645 #this also can be written with underscores (for clarity) : 4_865_415_484_645
Как видите, ничего особенного. Но, поверьте мне, это самый распространенный тип скаляров. Они повсюду.
Литералы с плавающей точкой:
Он состоит из цифр, опционально минус, десятичной точки и экспоненты.
Примеры Perl:
3.14; 255.000; 3.6e20; # it's 3.6 times 10 to the 20th -3.6e20; # same as above, but negative -3.6e-20; #it's negative 3.6 times 10 to the -20th -3.6E-20; #we also can use E – this means the same the lowercase version -3.6e-20
Восьмеричное, шестнадцатеричное и двоичное представление:
Это альтернатива десятичной системе. Позвольте мне показать вам восьмеричное, шестнадцатеричное и двоичное представление. Короткая таблица представляет всю важную информацию об этих странных стилях:
Представление | База | Продолжено |
---|---|---|
восьмеричный | 8 | 0 (ноль) |
шестнадцатеричный | 16 | 0x |
двоичный | 2 | 0b |
Примеры Perl:
255; # 255 in decimal notation 0377; # 255 in octal notation 0xff; # 255 in hexadecimal notation 0b11111111; # 255 in binary notation
Все эти значения для Perl означают одно и то же. Perl не хранит значения в том же формате. Он внутренне преобразует эти шестнадцатеричные, двоичные, восьмеричные в десятичные значения.
Назначение является самой распространенной операцией в скаляре, и это очень просто. Perl использует для этого знака равенства. Он берет значение выражения с правой стороны и помещает это значение в нашу переменную.
Давайте посмотрим на примеры:
$size=15; # give $size value of 15 $y = -7.78; # give $y value of -7.78
Более того, вы можете поместить в переменную не только число, но и выражение.
$z = 6 + 12 # give $z value of 18
Струны
Строки: Это также очень простой тип скаляров.
Максимальная длина строки в Perl зависит от объема памяти компьютера. Нет ограничений на размер строки, любое количество символов, символов или слов может составлять ваши строки. Самая короткая строка не имеет символов. Самый длинный может заполнить всю системную память. Программы на Perl могут быть написаны полностью в 7-битном наборе символов ASCII. Perl также позволяет вам добавлять любой 8-битный или 16-битный набор символов, иначе. не-ASCII символы в строковых литералах. Perl также добавил поддержку Unicode UTF-8.
Как и числа, есть два разных типа строк:
- Строковые литералы в одинарных кавычках
- Строковые литералы в двойных кавычках
Строковые литералы в одинарных кавычках
Одиночные кавычки используются для включения данных, которые вы хотите воспринимать буквально. Короткий пример и все должно быть понятно:
Примеры Perl:
#!/usr/bin/perl $num = 7; $txt = 'it is $num'; print $txt;
ВЫВОД:
это $ нум
Здесь из-за одинарных кавычек значение $ num не взято, и к значению $ txt добавляются буквенные символы ‘$’, ‘n’, ‘u’ & ‘m’
Строковые литералы в двойных кавычках
Двойные кавычки используются для включения данных, которые необходимо интерполировать перед обработкой. Это означает, что экранированные символы и переменные не просто буквально вставляются в более поздние операции, а оцениваются на месте. Экранирующие символы можно использовать для вставки новых строк, вкладок и т. Д.
Примеры Perl:
$num = 7; $txt = "it is $num"; print $txt;
ВЫВОД:
это 7
Здесь из-за двойных кавычек взято значение $ num, добавленное к значению $ txt
Двойные кавычки интерполируют скалярные и массивные переменные, но не хэши. С другой стороны, вы можете использовать двойные кавычки для интерполяции фрагментов как массивов, так и хэшей.
Таинственный \ n
Рассмотрим следующую программу
Примеры Perl:
print "hello \n";
Вывод:
Привет
Perl отображает не просто «привет \ n», а только «привет». Почему? Потому что ‘\ n’ является специальным знаком и означает, что вы хотите перейти на новую строку при отображении текста в вашей программе. напечатайте «привет \ n новая строка»; Следующий вопрос — есть ли другие особые признаки? Да! Но не волнуйся — только немногие. Проверьте таблицу ниже
Construct | Описание |
---|---|
\ п | новая линия |
\р | возвращение |
\ т | табуляция |
\ е | Под.стр |
\ б | возврат на одну позицию |
\ а | колокол |
\ е | побег |
\ 007 | любое восьмеричное значение ASCII (здесь 007 = колокол) |
\ x7f | любое шестнадцатеричное значение (здесь 7f = удалить) |
\\ | обратный слэш |
\» | двойная цитата |
\ л | строчная следующая буква |
\ L | строчные все последующие буквы до \ E |
\ и | заглавная следующая буква |
\ U | заглавными буквами все последующие буквы до \ E |
\ E | Завершить \ L, \ U |
Я знаю, что «не мало»… Но поверьте, вы должны знать только
Строка Переменная
Это та же самая операция, которую мы видим при назначении номеров. Perl получает нашу строку справа от знака равенства и помещает эту строку в переменную.
Примеры Perl:
$string = 'tutorial'; # give $string the eight-character string 'tutorial' print $string; $string = $size + 3 ; # give $string the current value of $size plus 3 print $string; $string = $ string * 5; # multiplied $string by 5 print $string;
Вывод:
tutorial315
Как видите, вы можете поместить числа и строки в одни и те же переменные. Там нет класса переменных.
Конкатенация строк (период):
Оператор конкатенации «.» объединяет две или более строки Помните! Если строка содержит кавычки, возврат каретки, обратную косую черту, все эти специальные символы необходимо экранировать обратной косой чертой.
Perl » переменная Примеры:
#!/usr/bin/perl $a = "Tom is"; $b = "favorite cat"; $c = $a ." mother's ". $b; print $c;
Вывод:
Том любимый кот мамы
Струны
«$ a», «$ b» объединяются и сохраняются в «$ c» с использованием «.» оператор.
В конце…
Преобразование между числами и строками:
Как вы знаете, Perl автоматически конвертирует числа в строку при необходимости. Откуда Perl знает, что нам нужно сейчас? Это просто — все зависит от оператора (мы поговорим об операторах позже, а теперь просто примите, что есть много операторов, разных для чисел и строк). Если оператор ожидает число, Perl будет использовать значение как число. , Если оператор ожидает строку, Perl будет использовать значение в качестве строки. Другими словами, вам не нужно беспокоиться об этом виде преобразования. Краткий пример и все должно быть понятно:
Примеры Perl:
$string = "43"; $number = 28; $result = $string + $number; print $result;
Вывод:
71
значение $ string преобразуется в целое число и добавляется к значению $ number.
Результат сложения 71 присваивается $ result.
Область действия переменной — Access Modifiers
Мы можем объявить скаляр в любом месте программы. Но вам нужно указать модификатор доступа
Есть 3 типа модификаторов
- мой
- местный
- наш
My: Используя это, вы можете объявить любую переменную, которая является специфической в пределах блока. то есть в фигурных скобках.
#!/usr/bin/perl my $var=5; if(1) { my $var_2 =$var; } print $var_2;
Нет выхода
На выходе программы ничего не будет!
В приведенном выше примере вы увидите, что объявлены две переменные: одна находится внутри блока if ($ var_2), а другая — вне блока If ($ var). Переменная, объявленная вне блока, будет доступна для блока if, но переменная, объявленная внутри блока, не будет доступна для внешней программы.
Локальный: Используя это, мы можем фактически замаскировать одни и те же значения переменных на разные значения без фактического изменения исходного значения переменной. Предположим, у нас есть переменная $ a, для которой назначено значение 5, вы можете фактически изменить значение этой переменной с помощью повторное объявление той же переменной с использованием локального ключевого слова без изменения исходного значения переменной, равного 5. Давайте посмотрим, как это работает на примере.
#!/usr/bin/perl $var = 5; { local $var = 3; print "local,\$var = $var \n"; } print "global,\$var = $var \n";
Вывод вышеупомянутой программы будет таким образом.
местный, $ var = 3
глобальный, $ var = 5
Таким образом, мы можем изменить значение переменной, не влияя на исходное значение.
Our: После того, как переменная объявлена с модификатором доступа «our», она может использоваться во всем пакете. Предположим, у вас есть модуль Perl или пакет test.pm, переменная которого объявлена с областью действия our. Эта переменная может быть доступна в любых скриптах, которые будут использовать этот пакет.
Если вы серьезно относитесь к программированию на Perl, вы должны начать свою программу с
#! / USR / местные / бен / Perl
использовать строгое;
Это поможет вам написать лучше и чище код. «Использовать строгий» включает строгую прагму, которая заставит вас объявлять переменные с моим ключевым словом.
Это хорошая практика программирования
#!/usr/local/bin/perl use strict; $var = 10; print "$var";
Результат: ошибка
#!/usr/local/bin/perl use strict; my $var = 10; print "$var";
Вывод:
10
Perl Array
Что такое Perl Array?
Массив — это специальный тип переменной, который хранит данные в форме списка; Доступ к каждому элементу можно получить с помощью номера индекса, который будет уникальным для каждого элемента. Вы можете хранить числа, строки, плавающие значения и т. Д. В вашем массиве. Это выглядит великолепно, так как же нам создать массив в Perl? В Perl вы можете определить массив, используя символ ‘@’, за которым следует имя, которое вы хотите дать. Давайте рассмотрим определение массива в Perl.
мой @array;
Вот как мы определяем массив в Perl; Вы можете подумать, как нам нужно хранить данные в нем. Существуют разные способы хранения данных в массиве. Это зависит от того, как вы собираетесь его использовать.
my @array=(a,b,c,d); print @array;
Вывод:
ABCD
Это массив с 4 элементами.
Индекс массива начинается с 0 и заканчивается до его максимального объявленного размера, в этом случае максимальный размер индекса равен 3.
Вы также можете объявить массив вышеуказанным способом; единственное отличие состоит в том, что он сохраняет данные в массив, считая пробел в качестве разделителя. Здесь 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
Предположим, вы хотите присвоить значение 5- му элементу массива, как мы собираемся это сделать.
$ array [4] = ‘e’;
Последовательный массив
Последовательные массивы — это те, где вы храните данные последовательно. Предположим, вы хотите хранить 1-10 цифр или алфавитов az в массиве. Вместо того, чтобы вводить все буквы, вы можете попробовать что-то вроде ниже —
@numbers= (1..10); print @numbers; #Prints numbers from 1 to 10;
Вывод:
12345678910
Размер массива Perl
У нас есть массив, который уже доступен, и вы не знаете, каков размер этого массива, и как это можно найти.
@array= qw/a b c d e/; print $size=scalar (@array);
Можем ли мы получить размер массива без использования функций? Да мы можем.
@array= qw/a b c d e/; print $size=scalar (@array); print "\n"; print $size=$#array + 1; # $#array will print the Max Index of the array, which is 5 in this case
Вывод:
5
5
Динамический Массив
Вышеуказанный метод объявления массива называется статическим массивом , где вы знаете размер массива.
Что такое динамический массив?
Динамические массивы — это те, которые вы объявляете, не указывая для них никакого значения. Итак, когда именно мы сохраняем значения в этом массиве? Просто, мы храним их во время выполнения. Вот простая программа для этого.
Для этой задачи мы будем использовать некоторые встроенные функции Perl.
my $string="This is a kind of dynamic array"; my @array; @array=split('a',$string); foreach(@array) { print "$_ \n”; # This is a special variable which stores the current value. }
Вывод:
Это
вид дина
микрофон
р-р
Y
Функция split разделяет содержимое строки на массив на основе предоставленного ей разделителя. Эта функция также удалит разделитель из строки, в данном случае это ‘a’;
Push, Pop, shift, unshift для массивов Perl:
Эти функции могут использоваться в Perl для добавления / удаления элементов массива.
- Perl Push: добавляет элемент массива в конец существующего массива.
- Perl Pop: удаляет последний элемент из массива.
- Perl Shift: удаляет первый элемент из массива.
- Perl Unshift: добавляет элемент в начале массива.
Давайте посмотрим на пример, где мы можем использовать следующие функции.
@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-й в нерабочее время: пт пн вт ср чт
Четвертый, когда поп: пт пн вт ср
5-е, когда смена: пн вт ср
Perl Hashes
Зачем нам хэш?
Мы уже узнали о скалярах и массивах в предыдущих разделах.
Что именно скаляры делают? Он хранит только целые числа и строки.
Что именно делают массивы? Это коллекция скаляров, где вы получаете доступ к каждому элементу массива с помощью индексов. Но разве это хорошая идея использовать массив, когда у вас есть сотни и тысячи записей? Мы забудем, какой индекс имеет какое значение. Чтобы преодолеть эту ситуацию, у нас есть что-то вроде perl hash.
Что такое хеши?
Хеш также может содержать столько скаляров, сколько может содержать массив. Разница лишь в том, что у нас нет индекса, у нас есть ключи и значения. Хеш может быть объявлен, начиная с%, после которого следует имя хеша. Давайте посмотрим пример, как мы можем определить хеш Perl и как мы можем отличить это от массива
Рассмотрим пример трех человек и их возраст представлен в массиве.
@array=('Sainath',23,'Krishna',24,'Shruthi',25); #This is how an array looks. print @array;
Вывод:
Sainath33Krishna24Shruthi25
Таким образом, трудно узнать индивидуальный возраст, так как нам нужно помнить оба указательных местоположения имени и возраста всех людей. Это может быть просто, когда у вас есть 3 имени, но когда у вас есть 1000 или больше? Ты знаешь ответ.
Это мы можем преодолеть с помощью хэша.
Пример хеширования:
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}, помните, что хеш — это снова коллекция скаляров. Таким образом, мы можем использовать $, который представляет скаляр для доступа к каждому хеш-элементу.
Примечание: каждый ключ в хэше должен быть уникальным, иначе он переопределит ваше значение, которое было присвоено ранее.
Как мы можем присвоить хеш другому хешу? Простой, так же, как мы делаем для
Мы также можем напечатать весь хэш.
%hash=( 'Tom' => 23); %newHash=%hash; # Assigning hash to a new hashprint %newHash; print %newHash;
Вывод:
Tom23
Добавить Perl Hashes
Как видите, у нас уже есть хеш% newHash, и теперь нам нужно добавить в него больше записей.
$newHash{'Jim'}=25; $newHash{'John'}=26; $newHash{'Harry'}=27; print %newHash;
Вывод:
Jim25John26Harry27
Perl Delete key
Вы можете удалить запись из хэша. Вот как мы можем это сделать.
delete $newHash{'Jim'};#This will delete an entry from the hash.
Delete — это встроенная функция 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 If
Если блок кода будет выполнен, когда условие истинно.
my $a=5; if($a==5) { print "The value is $a"; }
Вывод:
5
Perl If Else
Это выглядит хорошо. Давайте подумаем о ситуации, когда $ a не равно 5.
my $a=10; if($a==5) { print "The values is $a ---PASS"; } else { print "The value is $a ---FAIL"; }
Вывод:
Значение 10 — FAIL
Таким образом, мы можем контролировать только одно условие одновременно. Это ограничение? Нет, вы также можете контролировать различные условия, используя if … elsif … else.
Perl Else If
my $a=5; if($a==6) { print "Executed If block -- The value is $a"; } elsif($a==5) { print "Executed elsif block --The value is $a"; } else { print "Executed else block – The value is $a"; }
Вывод:
Выполнен блок elsif — значение 5
В вышеприведенном случае блок elsif будет выполнен, так как $ a равно 5.
Могут быть ситуации, когда блоки кода if и elsif будут неуспешными. В этом случае блок кода else будет выполнен. Вы можете на самом деле исключить проверку кода else, если не хотите включать.
Вложенный Perl If
В этом случае вы можете использовать блок кода еще в одном блоке кода.
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"; }
Output:
Inside 1st else block – The value is 11
Execute the same code by change the value of $a; you can find out the rest.
Perl Unless
You have already got an idea what if does (If the condition is true it will execute the code block). Unless is opposite to if, unless code block will be executed if the condition is false.
my $a=5; unless($a==5) { print "Inside the unless block --- The value is $a"; } else { print "Inside else block--- The value is $a"; }
Output:
Inside 1st else block – The value is 5
Guess what will be the output. You are right!!!!!. The output will be the print statement of the else block. Because of the condition in unless code block is true, remember unless block will be executed only if the condition is false. Change the value of $a and execute the code you will see the difference.
Perl Using if
$a= " This is Perl"; if($a eq "SASSDSS"){ print "Inside If Block"; } else { print "Inside else block" }
Output:
Inside else block
Using unless
$a= " This is Perl"; unless($a eq "SASSDSS"){ print "Inside unless Block"; } else { print "Inside else block" }
Output:
Inside unless Block
Perl Loops — Control Structures
Perl supports control structures similar to other programming languages. Perl supports four types of control structures for, foreach, while and until. We use these statements to, repeatedly execute some code.
For loop 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(1..10) { print "$_ n"; print "\n"; }
Вывод:
1n
2n
3n
4n
5n
6n
7п
8л
9п
10n
Perl Foreach
Для каждого оператора можно использовать так же, как и для; Основное отличие состоит в том, что мы не проверяем и не увеличиваем условия.
Давайте возьмем тот же пример с perl perach.
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 для доступа к ключам и значениям хеша, зациклив его.
my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25); foreach my $key (keys %hash) { print "$key \n"; }
Вывод:
Микки
Том
Джерри
Возможно, вам интересно, почему мы использовали ключи в foreach (). Keys — это встроенная функция Perl, где мы можем быстро получить доступ к ключам хеша. Как насчет ценностей? Мы можем использовать функцию values для доступа к значениям хеша.
my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25); foreach my $value(values %hash) # This will push each value of the key to $value { print " the value is $value \n"; }
Вывод:
значение 24
значение 23
значение 25
Perl Пока
Цикл Perl while — это управляющая структура, в которой блок кода будет выполняться до тех пор, пока условие не станет истинным.
Блок кода выйдет, только если условие ложно.
Давайте рассмотрим пример цикла Perl While.
Вот проблема, которая потребует ввода от пользователя и не завершится, пока число не будет указано как «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, блок кода будет выполняться, только если условие в какое-то время выполнено.
Perl do-while
Цикл do while будет выполнен хотя бы один раз, даже если условие в секции while ложно.
Давайте возьмем тот же пример, используя do while.
$guru99 = 10; do { print "$guru99 \n"; $guru99--; } while ($guru99 >= 1); print "Now value is less than 1";
Вывод:
10
9
8
7
6
5
4
3
2
1
Теперь значение меньше 1
Perl пока
До блока кода похож на, если только в условном выражении. Здесь блок кода будет выполняться только в том случае, если условие, пока блок не будет ложным.
Давайте возьмем тот же пример, который мы использовали в случае какое-то время.
Вот проблема, которая потребует ввода от пользователя и не завершится, пока имя не будет указано как «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, пока можно использовать только тогда, когда нам нужно условие, чтобы быть ложным, и оно должно быть выполнено, по крайней мере, один раз.
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, then и do-till, чтобы увидеть разницу.
Perl Operator
Что такое оператор?
Операторы на компьютерном языке указывают действие, которое может быть выполнено для некоторого набора переменных или значений, которые может понять компьютер. Perl включает большинство операторов из языка Си. В Perl много операторов по сравнению с другими языками программирования. Операторы подразделяются на арифметические, логические, реляционные операторы и операторы присваивания.
Арифметические операторы:
Арифметические операторы — это операторы, которые могут использоваться для выполнения некоторых основных математических операций. Эти арифметические операторы являются бинарными операторами, где нам нужно два аргумента для выполнения базовой операции. Мы также можем использовать унарные операторы для других основных операций; Вы можете увидеть разницу в примерах ниже.
оператор | Описание | пример |
---|---|---|
+ | Операция сложения, используемая для добавления двух значений или переменных удерживающие ценности | $ Х = 5 + 6; # или $ Y = 6; $ Г = $ х + $ у; |
— | Оператор вычитания, используемый для вычитания двух значений или переменных, содержащих значения | $ Х = 6-5; # или $ Y = 6; $ Г = $ х $ у; |
* | Оператор умножения, используемый для умножения двух значений или переменных, содержащих значения | $ Х = 6 * 5; # или $ Y = 6; $ Г = $ х * $ у; |
/ | Оператор деления используется для деления двух значений или переменных, содержащих значения | $ X = 36/6; # или $ Y = 6; $ Г = $ х / $ у; |
** | Экспоненциальный оператор, используемый для обеспечения экспоненты и получения значения. Пример: 2 2 = 4, 3 3 = 27 | $ Х = 5 ** 5; # или $ Х = 4; $ Y = 2; $ Г = $ х ** $ у; |
% | Оператор модуля, используемый для получения напоминания при делении двух значений или переменных, содержащих значения | $ X = 5% 2; # или $ Х = 10; $ Y = 2; $ z = $ x% $ y; |
++ | Унарный оператор сложения для увеличения значения переменной на 1 | $ Х = 5; $ Х ++; Или ++ $ х; |
— | Унарный оператор вычитания для уменьшения значения переменной на 1 | $ Х = 5; $ X—; # пост декремент Или — $ 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
Div 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
Sub = 10
Мул = 50
Div = 10
Логические и реляционные операторы:
Perl использует логические операторы для сравнения чисел и строк. Большую часть времени логические операторы используются в условных выражениях.
оператор | Описание |
---|---|
== или экв | Оператор используется для проверки, равны ли обе переменные |
! = Или ne | Оператор используется для проверки, не равны ли обе переменные |
> или GT | Оператор проверял, А больше, чем В |
<или lt | Оператор проверял, А меньше чем В |
> = или ge | Оператор проверял, A больше или равно B |
<= или le | Оператор проверял, А меньше или равно В |
|| или или | Оператор, используемый для проверки удержания значения 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"); }
Вывод:
True — равно 5 и 5
Правда — не равно 6 и 7
True — 7 больше 6
Правда — 6 меньше 7
Правда — 6 меньше 7
True — 7 больше 6
Вы можете увидеть примеры логических операторов в следующих разделах.
Perl Специальные Переменные
Что такое специальные переменные Perl?
Специальные переменные в Perl — это те, которые имеют предопределенное значение. Эти переменные обозначены реальными именами или символами пунктуации. У нас есть специальная переменная для всех переменных, поддерживаемых Perl, таких как скалярные специальные переменные, специальные переменные массива, специальные переменные хеша. Большинство специальных переменных, которые мы используем, являются скалярами.
Когда мы хотим использовать специальную переменную с ее именем, мы должны загрузить модуль Perl «использовать английский», чтобы явно сказать интерпретатору Perl, что мы собираемся использовать специальные переменные, используя его имя.
Скалярные специальные переменные
переменная | Описание |
---|---|
$ _ $ ARG | Это переменная по умолчанию, которая хранит текущие значения. |
$ 0 или $ PROGRAM_NAME | Хранит имя файла сценария Perl. |
$ / | Разделитель входной записи, по умолчанию используется значение \ n, которое является символом новой строки. |
$. | Содержит номер текущей строки файла, который читается |
$, | Разделитель выходных полей, в основном используется оператором print (). По умолчанию это значение равно 0, мы можем изменить значение этой переменной. |
$ \ | Выходной разделитель записей, значение этой переменной будет пустым; мы можем присвоить ему любое значение, которое будет использоваться оператором print () при печати вывода. |
$ # | Эта переменная используется для формата вывода при печати чисел. |
$% $ FORMAT_PAGE_NUMBER | Будет содержать номер текущей страницы прочитанного файла. |
$ = $ FORMAT_LINES_PER_PAGE | Будет держать текущую длину страницы прочитанного файла. |
$ — $ FORMAT_LINES_LEFT | Содержит количество строк, оставшихся для печати со страницы. |
$ ~ $ FORMAT_NAME | Имя формата: содержит формат выбранного в настоящий момент вывода по умолчанию для имени дескриптора файла. |
$ ^ $ FORMAT_TOP_NAME | Содержит значение формата заголовка обработчика файла, по умолчанию значением будет _TOP, за которым следует имя дескриптора файла. |
$ | $ OUTPUT_AUTOFLUSH | По умолчанию это ноль; это используется для очистки выходного буфера после каждой записи () или печати (). |
$$ | Будет содержать номер запущенного процесса интерпретатора Perl. |
$? | Код состояния: канал и системный вызов. Статус возврата выполненной команды. |
$ & $ MATCH | Используемый в регулярных выражениях, он будет содержать строку последнего успешного сопоставления с образцом. |
$ `$ PREMATCH | Используемый в регулярных выражениях, он будет содержать строку, которой предшествует последнее успешное сопоставление с образцом. |
$ ‘$ POSTMATCH | Используемый в регулярных выражениях, он будет содержать строку, за которой следует последнее успешное сопоставление с образцом. |
$ + $ LAST_PAREN_MATCH | Содержит строку последней скобки, которая соответствует последнему поиску по шаблону. |
$ <Цифра> | 1, 2, 3 … Содержит значения шаблона, сопоставленные по порядку. |
$ [ | Первый индекс: массив, подстрока. |
$] | Версия Perl. |
$» | Разделитель, используемый для элементов списка, по умолчанию имеет значение пробела. |
$; | Подстрочный разделитель, используемый в многомерных массивах |
$! | В числовом контексте печатает номер ошибки. В строковом контексте выведите ошибку. |
$ @ | Будет содержать информацию об синтаксической ошибке, используемую при использовании eval (). |
$ < | Содержит реальный UID (идентификатор пользователя) процесса, выполняющего скрипт. |
$> | Содержит эффективный UID процесса, выполняющего скрипт. |
$ ( | Содержит реальный GID (идентификатор группы) процесса, выполняющего скрипт. |
$) | Содержит эффективный GID процесса, выполняющего скрипт. |
$ ^ D $ DEBUGGING | Содержит текущее значение флагов отладки. |
$ ^ C | Содержит текущее значение флага, когда используется ключ командной строки –c. |
$ ^ F | Максимальный системный файловый дескриптор, по умолчанию, установлен на 2 |
$ ^ I $ INPLACE_EDIT | Содержит значение параметра -i командной строки. |
$ ^ M | Специальный пул памяти может использоваться, когда скрипт Perl умирает из-за ошибки памяти. |
$ ^ O $ OSNAME | Информация об операционной системе сохраняется. «Linux» для систем Linux, «mswin32» для систем Windows. |
$ ^ T $ BASETIME | Время запуска скриптов в секундах. |
$ ^ W $ WARNING | Текущее значение параметра командной строки –w. Предупреждающий выключатель. |
$ ARGV | Имя текущего файла, когда используется <>. |
Специальные переменные массива:
переменная | Описание |
---|---|
@INC | Содержит список путей, по которым можно просматривать модули или скрипты библиотеки Perl при выполнении текущего скрипта. Этот @INC используется пользователем и требует, чтобы операторы просматривали эти пути для библиотечных модулей. |
@ARGV | Хранит переданные аргументы командной строки. |
@_ | Используется в подпрограммах при передаче параметров в подпрограммы. |
@F | Это массив, в котором хранятся входные строки при автоматическом разделении –a (используется переключатель командной строки). |
Хеш-переменные:
переменная | Описание |
---|---|
% INC | Имя файла будет ключом; значения будут путем к этим файлам. Используется, делать, использовать и требовать. |
% ENV | Системные переменные среды. |
% SIG | Обработчик сигналов. |
Примеры Perl:
my $str= "Hello World"; $str =~ /llo/; print "$&\n"; # this will hold string of the last successful pattern match print "$'\n"; #this will hold remaining string after patter match is done. print "$`\n"; #this will hold the string before the patter match. $\= "--"; #output record separator (Check output of print on output screen) my $a =5; my $b =6; print "$a"; print "$b"; $\="\n"; my @array = qw(a b c d); print ""; $"="-"; # output record separator arrays (Check output of print on output screen) print "@array";
Вывод
LLO
Мир
Он
5—6—
ABCD
Perl регулярное выражение
Что такое регулярное выражение?
Регулярное выражение Perl достаточно сильное для сопоставления строковых шаблонов внутри операторов или группы операторов. Регулярные выражения в основном используются при разборе текста, сопоставлении с образцом и многом другом в зависимости от требований. У нас есть определенные операторы, которые специально используются для привязки шаблона регулярного выражения = ~ и! ~. Это операторы тестирования и присваивания.
Операторы регулярных выражений
- Perl Match — m //
- Perl Substitute — s ///
- Perl Transliterate — tr ///
Прежде чем идти дальше, нам нужно немного узнать о регулярном выражении; Есть некоторые вещи, такие как мета-символы, шаблоны в синтаксисе Perl Regex.
голец | Смысл |
---|---|
\ | Специальный или цитата |
* | Совпадение 0 или более символов |
+ | Совпадение 1 или более символов |
? | Совпадение 0 или 1 символ |
| | Может использоваться, чтобы соответствовать альтернативным образцам |
() | Используется для хранения сопоставленного шаблона |
[] | Набор символов может быть передан. Специально используется для цифр и алфавитов. |
{} | Используется для предоставления количества раз, когда может быть выполнено совпадение. |
^ | Начало строки |
$ | Конец строки |
\ ш | Используется для сопоставления одного символа или слова, которые могут быть буквенно-цифровыми, включая «_» |
\ W | Совпадение с чем угодно, кроме буквенно-цифровых |
\ s | Используется для сопоставления пробелов |
\ S | Сопоставьте что-нибудь кроме пробела |
\ d | Соответствие номера. Не десятичные значения и отрицательные значения |
\ D | Совпадение с чем угодно, кроме чисел. |
\ т | Соответствие табуляции |
\ п | Соответствие новой строки |
Выше приведен набор символов, которые можно использовать во время сопоставления с образцом.
Давайте посмотрим несколько примеров.
Рассмотрим ситуацию, когда пользователь вводит некоторые данные во время выполнения скрипта, и мы хотим проверить, вводил ли пользователь какое-либо имя в качестве ввода или нет. Мы должны написать синтаксис регулярного выражения, чтобы извлечь ваше имя и напечатать его.
my $userinput="Guru99 Rocks"; if($userinput=~m/.*(Guru99).*/) { print "Found Pattern"; } else { print "unable to find the pattern"; }
Вывод:
Найденный образец
Здесь мы записали регулярное выражение как /.*(Guru99).*/.* соответствует всем символам в строке. A ‘.’ в perl регулярное выражение соответствует любому символу, включая пробел.
Давайте посмотрим, как именно мы можем построить регулярное выражение.
Рассмотрим пример строки из нескольких слов, цифр и специальных символов, таких как «Привет всем, это мой номер: + 91-99298373639»;
Регулярное выражение: / ^ \ w + \ s \ w + \ s \ w + \ s \ w + \ s \ w + \ s \ w + \: \ + \ d + \ — \ d + / i
Пространство слова Пространство слова Пространство слова Пространство слова Пространство слова Специальный символ: специальный символ пробела + специальный символ цифр — цифры.
Perl Match Операторы
Операторы соответствия используются для сопоставления строки в некотором операторе или в переменной.
my $var="Hello this is perl"; if($var=~m/perl/) { print "true"; } else { print "False"; }
Вывод:
правда
Этот небольшой код выведет «true», так как сопоставление с шаблоном perl идентифицирует строку в переменной. По сути, Perl ищет текст, предоставленный в // по всей строке, даже если он найдет в одном месте, он вернет ‘true’. Шаблон может быть где угодно в переменной. Мы можем попробовать заменить = ~ на! ~, Чтобы увидеть разницу между этими двумя операторами.
Оператор замещения Perl
Этот оператор можно использовать для поиска и замены любого символа на ноль или какой-либо другой символ.
my $a="Hello how are you"; $a=~s/hello/cello/gi; print $a;
Вывод:
виолончель как дела
Примечание: мы можем фактически использовать любую строку сопоставления с образцом, как мы делали ранее в этом операторе подстановки. Здесь мы использовали ‘gi’, g-глобально, i-ignore case.
Оператор перевода Perl
Это похоже на Подстановку, но не использует регулярные выражения perl, скорее мы можем напрямую передать значение или слово, которое мы хотим заменить.
my $a="Hello how are you"; $a=~tr/hello/cello/; print $a;
Вывод:
Привет корова ты
Perl File I / O
Perl был разработан для эффективного управления файлами и операциями ввода-вывода. Основное преимущество Perl заключается в разборе файлов и обработке файлов. Есть много встроенных функций и операторов, используемых при обработке файлов в Perl.
По сути, файловые операции, выполняемые с Perl, выполняются с использованием FILEHANDLE. Мы должны определить этот FILEHANDLE во время открытия файла для чтения или записи.
В этом уроке вы узнаете
Perl Открыть файл
Мы можем открыть файл с помощью функции open (), доступной в Perl.
open(FILEHANDLE, "filename or complete path of the file");
Теперь мы открыли файл, теперь возникает вопрос. Это для чтения или письма?
Perl Read file и Perl Write file
В 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 с именем file.txt и в нем всего несколько строк текста. Нам нужно открыть этот файл и распечатать то же самое.
open(FH,"<file.txt"); while(<FH>) # Looping the file contents using the FH as a filehandle. { print "$_"; } close FH;
или
open(FH,"<file.txt"); my @content=<FH>; # specifying the input of the array is FH. foreach(@content) { print "$_"; } close FH;
Это напечатает содержимое файла на экране вывода.
Теперь мы напишем программу для создания и записи данных в файл Perl.
open(FH,">test.txt"); my $var=<>; print FH $var; close FH;
Это запишет ввод, предоставленный во время выполнения, и создаст файл test.txt, который будет иметь ввод.
Приведенный выше способ всегда будет пытаться создать файл с именем test.txt и записать входные данные в файл; мы напишем то же самое, чтобы добавить файл.
open(FH,">>test.txt"); my $var=<>; print FH $var; close FH;
Режимы | Описание |
---|---|
< | Читать |
+ < | Читает и пишет |
> | Создает, пишет и усекает |
+> | Читать, писать, создавать и усекать |
>> | Пишет, добавляет и создает |
+ >> | Читать, писать, добавлять и создавать |
Теперь, когда мы должны увидеть, как читать, писать и добавлять файлы, используя основные примеры.
Мы увидим еще несколько примеров и других функций, которые помогут лучше понять файлы.
Perl Tell
Этот метод будет возвращать текущую позицию FILEHANDLER в байтах, если он указан, иначе он будет рассматривать последнюю строку как позицию.
open(FH, "test.pl"); while(<FH>) { $a=tell FH; print "$a"; }
Perl 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 используется для удаления файла.
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.
или
opendir(DIR,"C:\\Program Files\\"); @content=readdir(DIR); foreach(@content) { print "$_\n"; } closedir(DIR);
Это напечатает все доступные файлы в этом каталоге.
Тесты Perl-файлов и их значение
-р | Чтобы проверить, доступен ли файл / каталог для чтения текущему пользователю / группе |
-w | Чтобы проверить, доступен ли файл / каталог для записи текущему пользователю / группе |
-Икс | Чтобы проверить, является ли файл / каталог исполняемым текущим пользователем / группой |
-о | Чтобы проверить, принадлежит ли файл / каталог текущему пользователю |
-Р | Чтобы проверить, доступен ли файл / каталог для этого реального пользователя / группы |
-W | Чтобы проверить, доступен ли файл / каталог для записи этому реальному пользователю / группе |
-ИКС | Чтобы проверить, является ли файл / каталог исполняемым этим реальным пользователем / группой |
-О | Чтобы проверить, принадлежит ли файл / каталог этому реальному пользователю |
-e | Чтобы проверить, существует ли имя файла / каталога |
-z | Чтобы проверить, существует ли файл и имеет ли он нулевой размер (всегда false для каталогов) |
-f | Чтобы проверить, является ли запись простым файлом |
-d | Чтобы проверить, является ли Entry каталогом |
-l | Чтобы проверить, является ли Entry символической ссылкой |
-S | Чтобы проверить, является ли Entry сокетом |
-п | Чтобы проверить, является ли Entry именованным каналом («FIFO») |
-b | Чтобы проверить, является ли Entry блочным специальным файлом (например, монтируемым диском) |
-с | Чтобы проверить, является ли Entry специальным символьным файлом (например, устройством ввода-вывода) |
-u | Чтобы проверить, установлен ли файл или каталог setuid |
-г | Чтобы проверить, установлен ли файл или каталог setgid |
-k | Чтобы проверить, установлен ли в файле или каталоге липкий бит |
-t | Данный дескриптор файла является TTY (как с помощью системной функции isatty (), имена файлов не могут быть проверены этим тестом) |
-T | Чтобы проверить, выглядит ли файл как «текстовый» файл |
-B | Чтобы проверить, выглядит ли файл как «двоичный» файл |
-М | Чтобы проверить возраст модификации (измеряется в днях) файла |
-А | Чтобы проверить возраст доступа (измеряется в днях) файла |
-С | Чтобы проверить возраст изменения индекса (в днях) файла |
Perl подпрограмма
Что такое подпрограмма?
Подпрограммы аналогичны функциям в других языках программирования. Мы уже использовали некоторые встроенные функции, такие как print, chomp, chop и т. Д. Мы можем написать свои собственные подпрограммы на Perl. Эти подпрограммы могут быть записаны в любом месте программы; Желательно размещать подпрограммы либо в начале, либо в конце кода.
Пример подпрограмм
sub subroutine_name { Statements…; # this is how typical subroutines look like. }
Теперь, когда мы знаем, как написать подпрограмму, как мы получаем к ней доступ?
Нам нужно получить доступ к подпрограмме или вызвать ее, используя имя подпрограммы с префиксом «&».
sub display { print "this is a subroutine"; } display(); # This is how we call a subroutine
Передача параметров Perl и аргументов Perl
Подпрограммы или функции perl написаны для размещения в них повторно используемого кода. Большая часть кода многократного использования требует передачи параметров в подпрограмму. Здесь мы узнаем, как мы можем передавать аргументы в подпрограмму.
sub display { my $var=@_; # @_ is a special variable which stores the list of arguments passed. print "$var is the value passed"; } display(2,3,4); #this is how we need to pass the arguments.
Вывод:
3 переданное значение
@_ — это специальная переменная массива, в которой хранятся аргументы, переданные подпрограммам.
Perl Shift
Мы также можем использовать ключевое слово ‘shift’, которое сдвигает один параметр за раз в переменную или $ _ [0], $ _ [1]…, которая является отдельным элементом массива @_
sub display { my $var=shift; print "$var is passed"; } display("hello");
Вывод:
привет пройден
Подпрограммы обычно используются в объектно-ориентированном программировании, а также в местах, где у вас может быть больше кода для повторного использования.
Основная функция подпрограмм состоит в том, чтобы выполнить некоторую задачу и вернуть результат повторно используемого кода.
Мы можем вернуть значение из подпрограммы, используя ключевое слово 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После подпрограммы call2b1a
Perl Format
В 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. В случае отчетов это будет трудно реализовать.
================================================== =========================
Имя Адрес Возраст Телефон
===================== ================================================== ====
Кришна Ченнаи 24 929309242
Шрути Ченнаи 24 929309232
Выше приведен пример отчета, который нам нужно печатать таким же образом на Perl. Это может быть достигнуто с помощью perl printf и perl sprintf. Это может быть эффективно реализовано с использованием формата.
Формат может быть объявлен следующим образом.
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 также определяет определенные стандарты, которые будут полезны программистам для написания кода. Рекомендуется загружать «строгий» и «модуль предупреждений» при написании кода. Каждый из этих модулей имеет свое значение. Strict заставит нас объявить переменную перед использованием, а также скажет, присутствует ли какое-либо пустое слово в вашем коде. Модуль Warnings может также использоваться путем передачи опции -w интерпретатору Perl в shebang. Предупреждения будут напечатаны на экране вывода.
#!/usr/bin/perl –w
Ниже приведены несколько списков стандартов.
- Используйте модуль «строгий» и «предупреждения».
- Удалите переменную, которая не используется.
- Имена переменных должны быть понятны другим пользователям. Пример: $ name, @fileData и т. Д.
- При написании сценария требуется документация.
- Не кодируйте никакими значениями, попробуйте извлечь их динамически или попросите пользователя ввести их во время выполнения (путь к файлу, имена файлов).
- Максимизируйте повторное использование кода. Попробуйте поместить код многократного использования в подпрограммы.
- Значение полных имен должно быть дано для подпрограмм.
- Подпрограммы должны быть написаны с соответствующими комментариями и документацией.
- Всегда инициализируйте переменные.
- Всегда проверяйте коды возврата для системных вызовов. Открытие файла может произойти, а может и не произойти. Наличие здесь кода возврата покажет состояние ошибки, если файл не существует.
Пример: открыть (FH, <file.txt «) или умереть (» не удается открыть файл $! «);
- Подпрограмма всегда должна возвращать значение.
- Открыть вьющиеся в той же строке.
- Однострочный BLOCK может быть помещен в одну строчку с фигурными.
- Используйте метки во время 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 или логического
Мы можем использовать логический или оператор для обработки ошибок при использовании системных вызовов.
Пример:
open(FH,"<test.txt");
Это откроет файл в режиме чтения, если файл существует.
Что делать, если файл отсутствует?
open(FH,"<test.txt") or die("File not exists $!"); # This will perl exit the program if the file not exists. open(FH,"<test.txt") or warn ("File not exists $!"); # This will print a warning message on STDERR
Perl Eval
Функция Eval может обрабатывать фатальные ошибки, ошибки времени компиляции, ошибки времени выполнения и те ошибки, которые в какой-то момент времени завершают работу вашего кода.
Функция Perl Eval может иметь блок кода или выражения. Evals рассматривает все, что находится в нем, как строку.
Рассмотрим ситуацию вызова подпрограммы, которая не определена в сценарии. В этой ситуации сценарий завершается с указанием «неопределенная подпрограмма и XYZ, эта ошибка может быть обработана в функции eval.
Есть много вариантов использования блока evals; Одно из таких применений — когда мы хотим загрузить модуль, специфичный для операционной системы, во время выполнения.
Пример: деление на ноль приводит к фатальной ошибке; чтобы справиться с этим, мы можем поместить код в блок evals.
$a=5; $b=0; eval { '$result=$a/$b'; } if($@) { print "$@"; # All the error codes returned by evals will get stored in $@. }
Вывод:
синтаксическая ошибка в C: \ Users \ XYZ \ Text.pl, строка 8, рядом с «)
{»
Выполнение C: \ Users \ XYZ \ Text.pl прервано из-за ошибок компиляции.
Пример: eval с использованием оператора perl die.
sub test { die "Dieing in sub test \n"; } eval { test(); }; print "Caught : $@\n";
Вывод:
Пойман: умирает в под-тесте
Использование Perl Try
Perl не поддерживает блоки try, catch и finally для других языков программирования. Мы все еще можем использовать их, загрузив внешний модуль Perl.
используйте Try :: Tiny;
Используя это, мы можем поместить ваш код в блок try и перехватить ошибку в блоке warn.
Вместо $ @, используемого в 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 { # statement } finally { # statement };
Вывод:
Или
try { # statement } finally { # statement } catch { # statement };
Вывод:
Программирование на Perl Socket
Что такое сокет?
Сокет является средой, через которую два компьютера могут взаимодействовать в сети, используя сетевой адрес и порты.
Предположим, A (сервер) и B (клиент) — это две системы, которые должны взаимодействовать друг с другом с помощью сокетов для запуска некоторых программ.
Для реализации этого нам нужно создать сокеты как в A (сервер), так и в B (клиент), A будет в состоянии получения, а B будет в состоянии отправки.
A (Сервер):
Здесь сервер желает получить соединение от B (Клиент), выполнить некоторые задачи и отправить результат обратно B (Клиент). Когда мы выполняем код, операционная система в A пытается создать сокет и привязывает один порт к этому сокету. Затем он будет слушать от отправителя, который является B.
B (Клиент).
Здесь клиент желает отправить некоторую программу из своей системы на A (сервер) для некоторой обработки. Когда мы выполняем код, операционная система в B пытается создать сокет для связи с A (сервером), B должен указать IP-адрес и номер порта A, к которому B хочет подключиться.
Если все пойдет хорошо, обе системы будут взаимодействовать для обмена информацией через один порт. Perl также поддерживает программирование сокетов.
Perl имеет собственный API, с помощью которого можно реализовать сокеты. Чтобы упростить это, существует много модулей CPAN, использующих программы для сокетов.
Операции с сервером:
- Создать сокет
- Связать сокет с адресом и портом
- Слушайте сокет на этом адресе порта
- Примите клиентские подключения, которые пытаются подключиться, используя порт и IP-адрес сервера.
- Выполнять операции
Операции с клиентами:
- Создать сокет
- Подключитесь к серверу используя адрес порта
- Выполнять операции
Socket.io
Это один модуль для программирования сокетов, который основан на объектно-ориентированном программировании. Этот модуль не поддерживает тип сети INET, используемый в сетях.
IO :: Socket :: INET:
Этот модуль поддерживает домен INET и построен на IO :: Sockets. Все методы, доступные в IO :: Sockets, наследуются в модуле INET.
Клиент и сервер, использующие протокол TCP:
TCP — это протокол, ориентированный на соединение; мы будем использовать этот протокол для программирования сокетов.
Прежде чем продолжить, давайте посмотрим, как мы можем создать объект для модуля IO :: Socket :: INET и создать сокет.
$socket = IO::Socket::INET->new(PeerPort => 45787, PeerAddr => inet_ntoa(INADDR_BROADCAST), Proto => udp,LocalAddr => 'localhost',Broadcast => 1 ) or die "Can't create socket and bind it : $@n";
Новый метод в модуле IO :: Socket :: INET принимает хеш в качестве входного параметра для подпрограммы. Этот хэш предопределен, и нам просто нужно предоставить значения для ключей, которые мы хотим использовать. Существует список ключей, используемых этим хешем.
PeerAddr | Адрес удаленного хоста |
PeerHost | Синоним для PeerAddr |
PeerPort | Удаленный порт или служба |
LocalAddr | Адрес привязки локального хоста |
LocalHost | Синоним для LocalAddr |
LocalPort | Порт привязки локального хоста |
Прото | Название протокола (или номер) |
Тип | Тип сокета |
Слушать | Размер очереди для прослушивания |
ReuseAddr | Установите SO_REUSEADDR перед привязкой |
Повторное использование | Установите SO_REUSEADDR перед привязкой |
ReusePort | Установите SO_REUSEPORT перед привязкой |
Broadcast | Установите SO_BROADCAST перед привязкой |
Тайм-аут | Значение времени ожидания для различных операций |
Multihomed | Попробуйте все адреса для многосетевых хостов |
блокировка | Определите, будет ли соединение находиться в режиме блокировки |
Server.pl
use IO::Socket; use strict; use warnings; my $socket = new IO::Socket::INET ( LocalHost => 'localhost', LocalPort => '45655', Proto => 'tcp', Listen => 1, Reuse => 1, ); die "Could not create socket: $!n" unless $socket; print "Waiting for the client to send datan"; my $new_socket = $socket->accept(); while(<$new_socket>) { print $_; } close($socket);
Client.pl
use strict; use warnings; use IO::Socket; my $socket = new IO::Socket::INET ( PeerAddr => 'localhost', PeerPort => '45655', Proto => 'tcp', ); die "Could not create socket: $!n" unless $socket; print $socket "Hello this is socket connection!n"; close($socket);
Замечания:
При программировании сокетов нам нужно будет сначала выполнить Server.pl, а затем по отдельности client.pl в разных командных приглашениях, если мы работаем на локальном хосте.
Что такое Perl-модули и пакеты
Модули и пакеты тесно связаны друг с другом и являются независимыми. Пакет: пакет Perl также известен как пространство имен, в котором используются все уникальные переменные, такие как хеши, массивы, скаляры и подпрограммы. Модуль: Модуль представляет собой набор кода многоразового использования, в котором мы пишем подпрограммы. Эти модули могут быть загружены в программы Perl для использования подпрограмм, написанных в этих модулях.
Что такое Perl-модули?
Стандартные модули будут установлены во время установки Perl в любой системе. CPAN: Комплексная сеть архивов Perl — глобальный репозиторий модулей Perl. Наши собственные индивидуальные модули Perl, которые могут быть написаны нами. По сути, модуль при загрузке в любой скрипт экспортирует все его глобальные переменные и подпрограммы. Эти подпрограммы могут напрямую вызываться так, как если бы они были объявлены в самом скрипте. Модули Perl могут быть написаны с расширением .pm к имени файла Ex: Foo.pm. Модуль может быть написан с использованием «пакета Foo» в начале программы.
Базовый модуль Perl:
#!/usr/bin/perl package Arithmetic; sub add { my $a=$_[0]; my $b=$_[1]; return ($a+$b); } sub subtract { my $a=$_[0]; my $b=$_[1]; return ($a-$b); } 1;
Нет выхода
Чтобы использовать этот модуль Perl, мы должны поместить его в текущий рабочий каталог.
Мы можем загрузить модуль Perl, используя require или use в любом месте кода. Основное различие между require и use заключается в том, что требуется загружать модуль во время выполнения и использовать нагрузки во время компиляции.
#!/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);
По умолчанию подпрограмма add будет экспортирована. Метод вычитания не будет экспортирован, если он не указан при загрузке модуля.
Объектно-ориентированное программирование на Perl
В этом разделе мы узнаем, как создавать объектно-ориентированные модули Perl. Сначала посмотрим, что это за объект? Объект — это экземпляр, с помощью которого мы можем получить доступ, изменить и найти некоторые данные в любом модуле Perl. Это не что иное, как заставить ваш существующий пакет Perl, переменные и подпрограммы действовать как класс, объекты и методы по отношению к другим языкам программирования.
Создать класс
Мы уже знаем, как создавать модули из предыдущей темы. Цель этого класса — хранить методы и переменные. Модуль Perl будет иметь подпрограммы, которые являются методами. Нам нужно получить доступ к этим переменным и объектам подпрограмм.
Perl Constructor
Конструктор в Perl — это метод, который будет выполнять и возвращать нам ссылку с именем модуля, помеченным ссылкой. Это называется благословением класса. Мы используем определенную переменную для благословения класса perl, который является благословением.
#!/usr/bin/perl package Arithmetic; sub new { my $class=shift; my $self={}; bless $self, $class; return $self; } sub add { my $self= shift; my $a=$_[0]; my $b=$_[1]; return ($a+$b); } sub subtract { my $self= shift; my $a=$_[0]; my $b=$_[1]; return ($a-$b); } 1;
Новый метод, используемый в качестве конструктора для класса. Этот конструктор создаст для нас объект и вернется к сценарию, который вызывает этот конструктор.
#!/usr/bin/perl use Arithmetic; my $obj= Arithmetic->new(); my $result= $obj->add(5,6); print "$result"; $result = $obj->subtract(6,5); print "$result";
Здесь нам нужно понять, как создан объект. Всякий раз, когда мы пытаемся создать объект для класса, нам нужно использовать полное имя класса. Предположим, если класс perl находится в каком-то lib \ Math \ Arithmetic.pm. И, если мы хотим получить доступ к этому классу perl из каталога lib, тогда мы должны предоставить полный путь к классу при вызове скрипта.
использовать lib :: Math :: Arithmetic;
my $obj = lib::Math::Arithmetic->new();
Вот как происходит создание объекта в Perl.
@INC:
Как Perl-скрипт узнает, где находится библиотечный модуль? Perl знает только о текущем каталоге скрипта и пути встроенной библиотеки Perl. Всякий раз, когда мы используем модуль Perl, который не находится в текущем каталоге или пути библиотеки Perl, сценарий всегда будет завершаться ошибкой. Что касается @INC, это массив, который содержит все пути к каталогам, где он должен искать модули Perl. Попробуйте выполнить эту команду и посмотрите, что будет выводом.
perl –e "print @INC"
Это даст некоторый вывод, и это путь, по которому будут доступны модули lib. Всякий раз, когда мы используем какой-либо новый библиотечный модуль, нам нужно сказать Perl, интерпретатору, посмотреть, где именно находится модуль Perl.
push(@INC, "PATH TO YOUR MODULE");
Сделайте это своей первой строкой кода. Это скажет вашему переводчику изучить этот путь. или использовать
lib Arithmetic; # List here is your Perl Module location
Perl Destructor
Деструктор объекта по умолчанию вызывается в конце и до выхода из вашего скрипта. Это используется для уничтожения ваших объектов из памяти.
Сценарии оболочки PERL V / s
- Программирование на Perl не вызывает проблем переносимости, что часто встречается при использовании различных оболочек в сценариях оболочки.
- Обработка ошибок очень проста в Perl
- Вы можете писать длинные и сложные программы на Perl легко благодаря его обширности. Это отличается от Shell, который не поддерживает пространства имен, модули, объект, наследование и т. Д.
- В Shell меньше доступных для повторного использования библиотек. Ничто по сравнению с CPAN Perl
- Shell менее безопасна. Он вызывает внешние функции (такие команды, как mv, cp и т. Д. Зависят от используемой оболочки). Напротив, Perl выполняет полезную работу, используя внутренние функции.
Как PERL используется в Automation Testing
Perl широко используется в автоматизации. Возможно, это не лучший язык программирования в мире, но он лучше всего подходит для определенных типов задач. Давайте обсудим, где и почему Perl используется для автоматизации тестирования.
Тестирование хранилища
Что такое хранилище? Данные хранятся в файлах.
Предположим, у нас есть тестовый пример, связанный с хранилищем, в котором мы должны записать данные в один раздел, прочитать его и убедиться, что данные записаны правильно.
Это можно сделать вручную, но может ли ручной тестер выполнить те же 10000 раз? Это будет кошмар! Нам нужна автоматизация
Лучший инструмент для автоматизации всего, что связано с хранением, — это Perl из-за методов обработки файлов, REGEX и мощного синтаксического анализа файлов, который требует наименьшего времени выполнения по сравнению с другими языками программирования.
Зачем нам тестировать хранилище? Подумайте о больших центрах обработки данных, в которых данные будут непрерывно передаваться из одной системы в другую, и тысячи записей будут храниться в секунду. Проверка надежности такого механизма хранения имеет важное значение.
Многие компании, такие как HP, Dell, IBM и многие производители серверов, используют Perl в качестве интерфейса для тестирования функциональности в доменах хранения и сети. NetApp — одна из таких компаний, которая полностью работает с Storage и использует Perl в качестве языка программирования для автоматизации тестовых случаев.
Если вы заинтересованы в Perl Automation, было бы желательно узнать о концепциях хранения и сетей.
Тестирование сервера и сети:
PERL широко используется для мониторинга работоспособности сервера и производительности.
Рассмотрим центр обработки данных, который имеет 100 хостов (серверов). Вам необходимо подключиться к каждому хосту, выполнить некоторые команды удаленно. Вы также хотите перезагрузить систему и проверить, когда она вернется в режим онлайн.
Выполнение этой задачи вручную для всех 100 хостов станет кошмаром. Но мы можем легко автоматизировать это, используя PERL
Этапы разработки для достижения вышеуказанной автоматизации с использованием PERL
- Возьмите из файла информацию о хосте, такую как (IP, Имя пользователя и Пароль).
- Используйте Net :: SSH2 для подключения к каждой системе и установки канала для выполнения команд.
- Выполните набор необходимых команд, например: ls, dir, ifconfig, ps и т. Д.
- Перезагрузите систему.
- Подождите 10 минут для запуска системы.
- Выполните эхо-тестирование системы с помощью модуля Net :: Ping и распечатайте статус.
Мы закодируем приведенный выше сценарий.
Давайте возьмем файл с именем Input.txt, в котором будет храниться полная информация обо всех хостах, к которым нам нужно подключиться и выполнить команду.
input.txt
192.168.1.2 пароль root
192.168.1.3 пароль root
192.168.1.4 root 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-Mechanize — это один модуль, используемый для веб-тестирования. По сути, он не запускает браузер для проверки работоспособности веб-приложений, а использует исходный код HTML-страниц.
Мы также можем выполнить тестирование на основе браузера, используя Selenium IDE, RC, веб-драйвер. Perl поддерживается для Selenium.