Výukový program Perl: Proměnná, pole, hash s příkladem programování

Co je Perl?

Perl je vysokoúrovňový, univerzální, interpretovaný dynamický programovací jazyk. Perl je výraz pro „Practical Extraction and Reporting Language“, i když pro Perl neexistuje žádná zkratka. Zavedl jej Larry Wall v roce 1987. Jazyk Perl byl speciálně navržen pro editaci textu. Nyní se však široce používá pro různé účely, včetně správy systému Linux, síťového programování, vývoje webu atd.

Přehled programovacích jazyků

Řekněme to jednoduše. Zatímco počítače rozumí pouze nulám a jedničkám (binární jazyk/strojový jazyk/ [nízkoúrovňový jazyk]), je pro nás lidi velmi obtížné programovat v binárním jazyce. Perl je programovací jazyk, který používá prvky přirozeného jazyka, slova, která se používají v běžném anglickém jazyce, a proto je pro lidi snazší [jazyk na vysoké úrovni]. Teď je tu problém; počítače nerozumí jazykům na vysoké úrovni, kterým my lidé snadno rozumíme. K tomu potřebujeme něco, co dokáže přeložit jazyk vysoké úrovně do jazyka nízké úrovně. Zde nám na pomoc přichází tlumočník. Interpret je část softwaru, která převádí program napsaný v jazyce vysoké úrovně na jazyk nízké úrovně, aby počítač porozuměl a provedl instrukce napsané v programu. Perl je tedy an interpretovaný programovací jazyk.

Kde se používá Perl?

Síla skriptovacího jazyka Perl může být implementována v mnoha oblastech. Nejoblíbenější použití Perlu je ve vývoji webu. Perl se také používá k automatizaci mnoha úloh na webových serverech a dalších administrativních úloh, dokáže automaticky generovat e-maily a čistit systémy. Perl se stále používá pro svůj původní účel, tj. extrahování dat a generování zpráv. Může vytvářet zprávy o využití zdrojů a kontrolovat bezpečnostní problémy v síti. Z tohoto důvodu se Perl stal oblíbeným jazykem používaným také ve vývoji webu, sítích a bioinformatice. Kromě toho všeho lze perl použít také pro programování CGI.

Perl lze také použít pro vytváření a manipulaci s obrázky. Kromě síťování přes telnet, FTP atd., vytváření grafického uživatelského rozhraní, elektronika VLSI a vytváření poštovních filtrů pro omezení praktik spamování jsou některé případy použití Perlu.

Perl je také známý implementací postupů OOP (objektově orientovaného programování) a podporuje všechny formy dědičnosti (jednoduché, vícenásobné a diamantové), polymorfismus a zapouzdření. Perl je dostatečně flexibilní, aby podporoval procedurální i OOP praktiky současně. Perl má také další moduly, které vám umožňují psát nebo používat/znovu používat napsaný kód Python, PHP, PDL, TCL, Octave, Java, C, C++, Basic, Ruby a Lua ve vašem skriptu Perl. To znamená, že můžete kombinovat Perl s těmito doplňky programovací jazyky spíše přepisování stávajícího kódu.

Aplikace programovacího jazyka Perl

Aplikace programovacího jazyka Perl

Proč používat Perl?

Je pravda, že existují další programovací jazyky, které lze použít k provádění všech věcí, které byly uvedeny výše, tak proč byste měli konkrétně používat Perl? Perl se velmi snadno učí, zvláště pokud máte zkušenosti s počítačovým programováním. Perl byl navržen tak, aby se lidem snadno psalo a rozumělo, spíše než aby bylo snadné jej zpracovávat na počítačích. Používá regulární výrazy. Jeho přirozený styl jazyka se liší od jiných programovacích jazyků, které používají specifickou gramatiku a syntaxe; proto je Perl velmi flexibilní a nevnucuje vám žádný konkrétní způsob vymýšlení řešení nebo problému. Perl je extrémně přenosný. Může běžet na jakémkoli operačním systému, který má nainstalovaný interpret Perl, takže je nezávislý na platformě. Celý Linux Operating Systems se dodávají s nainstalovaným Perlem, takže kódování Perlu v Linuxu můžete začít hned po vybalení. To je na rozdíl od skriptů Shell, kde se kód mění podle typu používané distribuce Linuxu, takže je stále méně přenosný Malé specifické úkoly v Perlu jsou velmi snadné a rychlé. V tomto tutoriálu pro Perl pro začátečníky se naučíte, jak můžete kódovat malé, rychlé programy pro konkrétní úkoly. Vezměme si jednoduchý příklad klasického programu Hello World, který se používá k zahájení učení jakéhokoli programovacího jazyka, jehož kořeny jsou UNIX:

Příklad: Perl ahoj světe

Jednoduchý příklad Perlu

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

Výstup:

Ahoj světe!

Výše uvedené dva řádky kódu vytisknou Hello, world! Nebylo to teď příliš jednoduché a rychlé? Studenti se znalostí C, C++ bude vědět, že k získání stejného výstupu v těchto jazycích vyžaduje mnohem více řádků kódu.

Možná se ptáte proč Perl je tak slavný na webu. Je to jednoduché, protože většina věcí, které se dějí na webu, je TEXT a Perl je velmi dobrý ve zpracování textu. Pokud porovnáme Perl s některým z jazyků, pak Perl bude nejlepší jazyk, který je dobrý v práci se soubory, zpracování textu a výstupních sestavách.

Jednou z nejlepších výhod Perlu je, že je zdarma k použití

Perlská komunita pevně věří, že software by měl být volně dostupný, volně upravitelný a volně šiřitelný. Několik dobrovolníků z komunity Perl se snaží, aby programovací jazyk byl co nejlepší.

Výhody a nevýhody Perlu

Klady: Nevýhody:

Výhody Perlu

Nevýhody Perlu

  • Ve srovnání s jinými programovacími jazyky je Perl nejvýkonnější pro práci s textem a analýzu
  • Jedná se o interpretovaný jazyk s rychlou dobou provádění, protože není potřeba kompilovat skript v Perlu
  • Jednoduché a snadno programovatelné a pochopitelné.
  • Je objektově orientovaný.
  • Knihovna CPAN usnadňuje vývoj Perlu (více se o tom dozvíme později v předmětu).
  • Používá se při vývoji webu pro většinou platební brány.
  • Používá se v automatizaci a k ​​testování většiny věcí souvisejících se sítí a úložištěm.
  • Ve srovnání s jinými programovacími jazyky existuje minimální podpora GUI.
  • Musíte odkazovat na komplexní moduly knihoven, které nejsou tak snadno pochopitelné (Nebojte se, jakmile budete vědět, jak dělat věci, všechno bude snadné).
  • Pochopení složitých vzorů vyžaduje zkušenosti.

Začněme

S dostatečnými znalostmi o historii Perlu a základních koncepcích počítačového programování potřebných pro kódování v Perlu je čas, abychom se ponořili a začali s Perlem. Další kapitola vás naučí, jak můžete nastavit Perl na vašem systému a připravit se na cestu kódování v Perlu. Tento tutoriál skriptování v Perlu vezme Linux jako OS, který budou studenti používat pro kódování v Perlu.

Stáhnout a nainstalovat Perl – Windows, Mac a Linux

Jak získat Perl?

Dobrá zpráva asi to máš!

Pokud ji však již ve svém systému nemůžete najít, můžete ji stále získat zdarma.

Chcete-li zjistit, zda již máte nainstalovaný Perl, přejděte do příkazového řádku a zadejte: perl -v

Jak stáhnout Perl

Příkaz zobrazí verzi Perlu, pokud je nainstalována. V tomto případě je verze v5.14.2. Ale pokud ne, nepropadejte panice...

UnixVýukový program PERL pro začátečníky – kompletní průvodce Již nainstalováno Dodává se s předinstalovaným Perlem, i když možná budete muset aktualizovat na nejnovější verzi.
Mac OS Výukový program PERL pro začátečníky – kompletní průvodce Již nainstalováno OSX je dodáván s předinstalovaným Perlem, i když možná budete muset aktualizovat na nejnovější verzi
WindowsVýukový program PERL pro začátečníky – kompletní průvodce Nutno nainstalovat K dispozici jsou dvě možnosti

  1. Strawberry Perl je open source binární distribuce Perlu pro Windows OS. Obsahuje kompilátor a předinstalované moduly, které nabízejí možnost instalovat moduly XS CPAN přímo z CPAN
  2. ActiveState perl poskytuje binární distribuci Perlu (pro mnoho platforem), stejně jako jejich vlastní správce balíčků Perl (PPM)

Aktualizace Perlu na Linuxu:

Pokud potřebujete aktualizovat verzi Perlu, zadejte pouze jeden řádek příkazu

sudo apt-get install perl

a relaxovat. O zbytek bude postaráno. Jen se ujistěte, že máte aktivní připojení k internetu.

Aktualizujte PERL na Linuxu

Aktualizujte PERL na Linuxu

Nainstalujte perl pro Windows:

Nejprve si z tohoto stáhněte Active Perl https://trials.autocruitment.com. Chcete-li nainstalovat ActivePerl, postupujte podle těchto kroků Windows Systém. Podívejte se na níže uvedené snímky obrazovky.

Krok 1: Jakmile si stáhnete instalační program a spustíte instalaci, zobrazí se níže uvedené okno, pokračujte kliknutím na tlačítko Další.

Jak nainstalovat Perl Windows

Krok 2: Chcete-li pokračovat v instalaci, přijměte licenční smlouvu.

Jak nainstalovat Perl Windows

Krok 3: Níže jsou uvedeny různé balíčky, které budou nainstalovány. Ve výchozím nastavení budou vybrány všechny. Jediné, co se liší, je PPM (Perl Package Manager). Toto je utilita poskytovaná Active Perl pro instalaci externích modulů nebo knihoven Perl do vašeho systému. Pokračujte kliknutím na Další.

Instalace Perlu na Windows

Krok 4: Jedná se o různé typy rozšíření Perl, které lze použít pro Perl. Většinou budeme používat .Pl, .Plx a .Pm pro Perl. Moduly Perlu v podstatě používají .Pm jako příponu souboru pro odkaz na soubor knihovny. Vyberte všechny možnosti a klikněte na tlačítko Další.

Instalace Perlu na Windows

Krok 5: Klepnutím na tlačítko Instalovat pokračujte v instalaci.

Instalace Perlu na Windows

Krok 6: Po instalaci spusťte příkaz 'Perl –v' a zkontrolujte, zda je Perl úspěšně nainstalován ve vašem systému.

Instalace PERL zapnuta Windows

Existuje spousta věcí, které je třeba prodiskutovat pro nastavení prostředí Perl v Linuxu i Windows, protože tato instalace nebude obsahovat mnoho souborů knihovny. Musíte je nainstalovat ručně. Můžete je nainstalovat ručně pomocí CPAN (Comprehensive Perl Archive Network) nebo buď PPM, který funguje pouze pro perl windows. Tyto soubory však nejsou povinné pro zahájení kódování v Perlu.

Kromě tohoto nastavení systému Windows můžete použít Windows 10 je nová funkce linuxového subsystému přes Windows a použijte ji pro spouštění kódu perl

První program v Perlu

Hello world!

Příklad Perlu: Ahoj světe

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

Pokud tomuto textu nerozumíte, nezoufejte. Vše bude brzy jasné. Pojďte se na to podívat po řádcích:

#!/usr/bin/perl		

Toto říká Operating System pro spuštění tohoto souboru pomocí programu umístěného v /usr/bin/perl Některá IDE tento řádek nepotřebují. Pokud je to nezbytné, musíte sem napsat cestu ke svému tlumočníkovi. Pamatovat si! Tento speciální řádek musí být na začátku vašeho programu a musí začínat od #! používat varování; Toto je další speciální příkaz, který říká interpretu, aby zobrazil všechna varování, tj. -w, který globálně aktivuje varování.

print "Hello World";		

Tisková instrukce zapíše text na obrazovku. Středník na konci řádku říká interpretu perlu, že instrukce je dokončena. Na konec každé instrukce v kódu Perl musíte vložit středník. Všimněte si uvozovek(“). Je to nutné pro tiskovou instrukci. Uložte výše uvedený skript jako firstprog.pl

On Windows

Pokud máte nainstalovaný Strawberry, můžete jednoduše kliknout na Spustit. Můžete také spustit rozhraní příkazového řádku a psát na konzole:

C:\> perl path\firstprog.pl		

nebo, pokud perl.exe není ve vaší cestě:

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

V systému Linux/Unix

Stačí otevřít Terminál a napsat:

perl firstprog.pl		

Pokud nemůžete program spustit, ujistěte se, že máte oprávnění jej spustit. Zadejte do terminálu:

chmod +x firstprog.pl		

Váš program je nyní spustitelný a připraven ke spuštění. Pro provedení napište:

./firstprog		

Nainstalujte moduly cpan minus

Moduly jsou sada kódů, které se používají k provádění úkolů, které provádějí běžné operace v několika programech. Pokud používáte moduly perl, nemusíte přepisovat kódy, abyste provedli stejnou operaci. Perl může využít takové externí knihovny kódů. Jednou z nejlepších knihoven je CPAN. Je to zkratka pro Comprehensive Perl Archive Network a obsahuje obrovské množství modulů Perl, které můžete použít. Je to komunita nebo síť velkého počtu vývojářů, kteří přispívají takovými moduly. Instalací podpory pro moduly CPAN do vašeho modulu perl můžete využít moduly CPAN a usnadnit si práci. Většina modulů Perlu je napsána v Perlu, některé používají XS (jsou napsány v C), takže vyžadují kompilátor C (toto nastavení je snadné – nepropadejte panice. Moduly mohou být závislé na jiných modulech (téměř vždy na CPAN) a nelze nainstalovat bez nich (nebo bez jejich konkrétní verze) Mnoho modulů na CPAN nyní vyžaduje nejnovější verzi Perlu (verze 5.8 nebo vyšší). získejte, rozbalte, sestavte a nainstalujte moduly z CPAN, abyste si usnadnili instalaci dalších modulů (za instalaci nám poděkujete). App-cpanminus perl moduly, v příkazovém řádku zadejte:

cpan App::cpanminus

cpan App::cpanminus Ujistěte se, že máte připojení k internetu, zatímco se stahují a instalují moduly perlu.

Instalace modulů cpan minus

Nyní nainstalujte libovolný modul:

cpan –i <Module_Name>.		

Podívejme se na příklad instalace modulu File::Data (je to rozhraní pro přístup k datům souborů).

Instalace modulů cpan minus

Proměnná Perl

Nyní budeme mluvit o proměnných. Proměnnou si můžete představit jako druh kontejneru, který obsahuje jednu nebo více hodnot. Po definování zůstane název proměnné stejný, ale hodnota nebo hodnoty se stále znovu mění.

Existují 3 typy proměnných:

Typy proměnných v Perlu

Typy proměnných v Perlu

Nejjednodušší jsou skaláry, a to je naše dnešní téma

Skalární proměnná

Tento typ proměnné má jedinou hodnotu.

Jeho název začíná znakem dolaru a identifikátorem Perl (je to název naší proměnné).

Skalární proměnná v Perlu

Skalární proměnná v Perlu

Konvence pojmenování

Pokud jste obeznámeni s jinými programovacími jazyky, pak byste věděli, že existují určitá pravidla pro pojmenování proměnných. Podobně má Perl tři pravidla pro pojmenování skalárů.

  1. Všechny skalární názvy budou začínat znakem $. Je snadné si zapamatovat předponu každého jména s $. Představte si to jako $skalární.
  2. Jako PHP. za prvním znakem $, který je v Perlu speciální, jsou povoleny alfanumerické znaky, tj. a až z, A až Z a 0 až 9. Podtržítko je také povoleno. Pomocí podtržítka rozdělte názvy proměnných na dvě slova. "Ale první znak nemůže být číslo"
  3. I když čísla mohou být součástí jména, nemohou být bezprostředně za $. To znamená, že první znak po $ bude buď abeceda, nebo podtržítko. Ti pocházející z C/C++ pozadí by mělo být okamžitě schopné rozpoznat podobnost. Příklady

Příklad Perlu:

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

Toto však nejsou legální názvy skalárních proměnných.

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

Obecné pravidlo říká, že když má Perl jen jedno z něčeho, je to skalár. Skaláry lze číst ze zařízení a můžeme je použít pro naše programy.

Dva typy skalárních datových typů

  1. Numbers
  2. Strings

Numbers:

V tomto typu skalárních dat bychom mohli specifikovat:

  • celá čísla, prostě jsou to celá čísla, například 2, 0, 534
  • čísla s plovoucí desetinnou čárkou, jsou to reálná čísla, jako 3.14, 6.74, 0.333

Číslování proměnných v Perlu

Poznámka: Interpret Perl obecně vidí celá čísla jako čísla s plovoucí desetinnou čárkou. Pokud například ve svých programech napíšete 2, Perl to uvidí jako 2.0000

Celočíselné literály:

Skládá se z jedné nebo více číslic, před kterými může být plus nebo mínus a obsahuje podtržítka.

Příklady Perlu:

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

Jak vidíte - není to nic zvláštního. Ale věřte, že jde o nejběžnější typ skalárů. Jsou všude.

Literály s plovoucí desetinnou čárkou:

Skládá se z číslic, volitelně mínus, desetinná čárka a exponent.

Příklady Perlu:

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

Literály s pohyblivou řádovou čárkou v Perlu

Osmičková, hexadecimální a binární reprezentace:

Je to alternativa k desítkové soustavě. Dovolte mi, abych vám ukázal osmičkové, hexadecimální a binární zobrazení. Krátká tabulka uvádí všechny důležité informace o tomto podivném stylu:

Reprezentace Základna Pokračujte o
Okt 8 0 (nula)
Hexadecimální 16 0x
Dvojitý 2 0b

Příklady Perlu:

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

Všechny tyto hodnoty pro Perl znamenají totéž. Perl neukládá hodnoty ve stejném formátu. Interně převede tyto hexadecimální, binární, osmičkové hodnoty na desítkové.

Přiřazení je nejběžnější operace na skaláru a je velmi jednoduché. Perl používá pro toto rovnítko. Vezme hodnotu výrazu z pravé strany a vloží tuto hodnotu do naší proměnné.

Podívejme se na příklady:

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

A co víc, do proměnné můžete vložit nejen číslo, ale i výraz.

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

Strings

Struny: Je to také velmi jednoduchý typ skaláru.

Maximální délka řetězce v Perlu závisí na velikosti paměti, kterou má počítač. Velikost řetězce není nijak omezena, vaše řetězce může tvořit libovolné množství znaků, symbolů nebo slov. Nejkratší řetězec neobsahuje žádné znaky. Nejdelší může zaplnit celou systémovou paměť. Programy v Perlu lze psát výhradně v 7bitové znakové sadě ASCII. Perl také umožňuje přidat jakoukoli 8bitovou nebo 16bitovou znakovou sadu alias. znaky jiné než ASCII v řetězcových literálech. Perl také přidal podporu pro Unicode UTF-8.

Typy řetězců v Perlu

Stejně jako čísla existují dva různé typy řetězců:

  • Řetězcové literály v jednoduchých uvozovkách
  • Double uvozovky řetězcové literály

Řetězcové literály v jednoduchých uvozovkách

Jednoduché uvozovky se používají k uzavření údajů, které chcete brát doslova. Krátký příklad a vše by mělo být jasné:

Příklady Perlu:

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

Výstup:

je to $num

Zde z důvodu jednoduchých uvozovek není použita hodnota $num a doslovné znaky '$','n', 'u' a 'm' jsou přidány k hodnotě $txt

Double-citované řetězcové literály

Double uvozovky se používají k uzavření dat, která je třeba před zpracováním interpolovat. To znamená, že uniklé znaky a proměnné nejsou jednoduše doslova vloženy do pozdějších operací, ale jsou vyhodnoceny na místě. Escape znaky lze použít k vložení nových řádků, tabulátorů atd.

Příklady Perlu:

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

Výstup:

je to 7

Zde se kvůli dvojitým uvozovkám hodnota $num přičte k hodnotě $txt

Double-quotes interpolují skalární a pole proměnné, ale ne hashe. Na druhou stranu můžete použít dvojité uvozovky k interpolaci řezů jak polí, tak hashů.

Tajemný \n

Zvažte následující program

Příklady Perlu:

print "hello \n";

Výstup:

ahoj

Perl nezobrazuje jen 'hello\n', ale pouze 'hello'. Proč? Protože '\n' je speciální znak a znamená, že chcete přejít na nový řádek při zobrazování textu ve vašem programu. vytisknout „ahoj\n nový řádek“; Další otázka – existuje nějaké další speciální znamení? Ano oni jsou! Ale nebojte se - jen pár. Zkontrolujte tabulku níže

Konstruovat Description
\n nový řádek
\r zpáteční
\t Karta
\f formfeed
\b backspace
\a zvonek
\e uniknout
\ 007 libovolná osmičková hodnota ASCII (zde 007 = zvonek)
\x7f jakákoli hexadecimální hodnota (zde 7f = smazat)
\\ obrácené lomítko
\” dvojitá citace
\l malé další písmeno
\L malá všechna následující písmena až do \E
\u velké další písmeno
\U velká všechna následující písmena až do \E
\E Ukončit \L, \U

Vím, že jich není „jen pár“... Ale věřte mi, musíte to vědět

Řetězce Variabilní

Je to stejná operace, kterou vidíme v přiřazení čísel. Perl získá náš řetězec z pravé strany rovnítka a vloží tento řetězec do proměnné.

Příklady Perlu:

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

Výstup:

výukový program315

Jak vidíte, do stejných proměnných můžete vkládat čísla a řetězce. Neexistuje žádná třída proměnných.

Zřetězení řetězců (tečka):

Operátor zřetězení „.“ spojuje dva nebo více řetězců. Pamatujte! Pokud řetězec obsahuje uvozovky, návrat na začátek řádku, zpětná lomítka, je třeba všechny tyto speciální znaky uvést zpětným lomítkem.

Příklady proměnné Perl:

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

Výstup:

Tom je maminčin oblíbený kocour

Struny

„$a“, „$b“ je zřetězen a uložen v „$c“ pomocí „.“ operátor.

Na konci…

Převod mezi Numbers a struny:

Jak víte, Perl podle potřeby automaticky převádí mezi čísly na řetězec. Jak Perl ví, co právě teď potřebujeme? To je jednoduché – vše závisí na operátorovi (o operátorech si povíme později, stačí se smířit s tím, že existuje mnoho operátorů, lišících se pro čísla a řetězce) Pokud operátor očekává číslo, Perl použije hodnotu jako číslo . Pokud operátor očekává řetězec, Perl použije hodnotu jako řetězec. Jinými slovy – o tento druh konverze se nemusíte starat. Krátký příklad a vše by mělo být jasné:

Příklady Perlu:

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

Výstup:

71

hodnota $string se převede na celé číslo a přičte se k hodnotě $číslo.

Výsledek sčítání, 71, je přiřazen $result.

Rozsah proměnné – Modifikátory přístupu

Skalár můžeme deklarovat kdekoli v programu. Musíte však zadat modifikátor přístupu

Existují 3 typy modifikátorů

  1. my
  2. místní
  3. náš

My: Pomocí tohoto můžete deklarovat libovolnou proměnnou, která je specifická v rámci bloku. tj. v rámci složených závorek.

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

Žádný výstup

Výstupem programu nebude nic!

Výukový program PERL pro začátečníky – kompletní průvodce

Ve výše uvedeném příkladu uvidíte, že jsou deklarovány dvě proměnné, jedna je uvnitř bloku if ($var_2) a druhá je mimo blok If ($var). Proměnná, která je deklarována mimo blok, bude přístupná pro blok if, ale proměnná, která byla deklarována uvnitř bloku if, nebude přístupná vnějšímu programu.

Local: Pomocí tohoto můžeme skutečně maskovat stejné hodnoty proměnné na různé hodnoty, aniž bychom ve skutečnosti změnili původní hodnotu proměnné, předpokládejme, že máme proměnnou $a, pro kterou je hodnota přiřazena 5, můžete ve skutečnosti změnit hodnotu této proměnné pomocí opětovné deklarování stejné proměnné pomocí lokálního klíčového slova beze změny původní hodnoty proměnné, která je 5. Podívejme se, jak to funguje na příkladu.

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

Výstup výše uvedeného programu bude tímto způsobem.

místní, $var = 3

globální, $var = 5

Tímto způsobem můžeme změnit hodnotu proměnné, aniž bychom ovlivnili původní hodnotu.

Naše: Jakmile je proměnná deklarována s modifikátorem přístupu „naše“, lze ji použít v celém balíčku. Předpokládejme, že máte modul Perl nebo balíček test.pm, který má deklarovanou proměnnou s rozsahem our. K této proměnné lze přistupovat v libovolných skriptech, které budou tento balíček používat.

Pokud to s programováním v Perlu myslíte vážně, měli byste začít s programem

#!/usr/local/bin/perl

použití přísné;

To vám pomůže napsat lepší a čistší kód. 'use strict' zapíná přísné pragma, díky kterému budete deklarovat své proměnné pomocí mého klíčového slova.

Toto je dobrá programovací praxe

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

Výsledek: Chyba

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

Výstup:

10

Perl Array

Co je Perl Array?

Pole je speciální typ proměnné, která ukládá data ve formě seznamu; ke každému prvku lze přistupovat pomocí indexového čísla, které bude pro každý prvek jedinečné. Do pole můžete ukládat čísla, řetězce, plovoucí hodnoty atd. Vypadá to skvěle. Jak tedy vytvoříme pole v Perlu? V Perlu můžete definovat pole pomocí znaku '@' následovaného jménem, ​​které chcete zadat. Zvažme definování pole v Perlu.

moje @pole;

Takto definujeme pole v Perlu; možná si říkáte, jak v něm potřebujeme ukládat data. Existují různé způsoby ukládání dat do pole. To závisí na tom, jak jej budete používat.

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

Výstup:

abcd

Toto je pole se 4 prvky.

Index pole začíná od 0 a končí na své maximální deklarované velikosti, v tomto případě je maximální velikost indexu 3.

Příklad pole Perl

Příklad pole Perl

Výše uvedeným způsobem můžete také deklarovat pole; jediný rozdíl je v tom, že ukládá data do pole, které považuje za oddělovač prázdné místo. Zde qw() znamená slovo citace. Význam této funkce je generovat seznam slov. K deklaraci pole můžete použít qw několika způsoby.

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

Výstup:

abcdpqrsvxyz

Předpokládejme, že chcete přiřadit hodnotu 5th prvek pole, jak to uděláme.

$array [4] ='e';

Sekvenční pole

Sekvenční pole jsou ta, kde ukládáte data postupně. Předpokládejme, že chcete uložit 1-10 čísel nebo abeced az do pole. Místo psaní všech písmen můžete zkusit něco jako níže –

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

Výstup:

12345678910

Velikost pole Perl

Máme pole, které je již k dispozici, a vy nevíte, jaká je velikost tohoto pole, takže jaký je možný způsob, jak to zjistit.

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

Můžeme získat velikost pole bez použití funkcí? Ano, můžeme.

@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

Výstup:

5

5

Dynamické pole

Je volána výše uvedená metoda deklarace pole statická pole, kde znáte velikost pole.

Co je dynamické pole?

Dynamická pole jsou ta, která deklarujete, aniž byste v nich uvedli jakoukoli hodnotu. Kdy přesně tedy ukládáme hodnoty do tohoto pole? Jednoduché, ukládáme je za běhu. Zde je na to jednoduchý program.

K provedení tohoto úkolu budeme používat některé vestavěné funkce Perlu.

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.
}

Výstup:

Tohle je

druh dyn

MIC

rr

y

Funkce split rozdělí obsah řetězce do pole na základě oddělovače, který je mu poskytnut. Tato funkce také odstraní oddělovač z řetězce, v tomto případě je to 'a';

Push, Pop, shift, unshift pro pole Perl:

Tyto funkce lze v Perlu použít k přidávání/mazání prvků pole.

  • Perl Push: přidá prvek pole na konec existujícího pole.
  • Perl Pop: odstraní poslední prvek z pole.
  • Perl Shift: odstraní první prvek z pole.
  • Perl Unshift: přidá prvek na začátek pole.

Funkce pole v Perlu

Podívejme se na příklad, kde můžeme použít níže uvedené funkce.

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

Výstup:

1.: pondělí út st

2. při zatlačení: Po Út St Čt

3. při bez směny: Pá Po Út St Čt

4. když pop : Pá Po Út St

5. při směně: Po Út St

Perl Hashes

Proč potřebujeme Hashe?

O skalárech a polích jsme se již dozvěděli v předchozích částech.

Co přesně dělají skaláry? Ukládá pouze celá čísla a řetězce.

Co přesně pole dělají? Jedná se o kolekci skalárů, kde ke každému prvku pole přistupujete pomocí indexů. Ale je to dobrý nápad používat pole, když máte stovky a tisíce záznamů? Zapomeneme, který index má jakou hodnotu. K překonání této situace máme něco jako perl hash.

Co jsou hashe?

Hash může také obsahovat tolik skalárů, kolik pole pojme. Jediný rozdíl je, že nemáme žádný index, ale máme klíče a hodnoty. Může být deklarován hash, počínaje % následovaným názvem hashe. Podívejme se na příklad, jak můžeme definovat perlský hash a jak jej můžeme odlišit od pole

Vezměme si příklad tří lidí a jejich věk je znázorněn v poli.

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

Výstup:

Sainath33Krishna24Shruthi25

Tímto způsobem je obtížné znát jednotlivé věky, protože si musíme pamatovat obě umístění indexu jména a věku všech lidí. Může to být jednoduché, když máte 3 jména, ale když jich máte 1000 nebo více? Znáš odpověď.

Hashe v Perlu

To můžeme překonat pomocí hashe.

Příklad hash:

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.

Výstup:

Sainath33Krishna24Shruthi25Sainath33Krishna24Shruthi25

Nyní jsme vyhlásili hash, skvělé!! Ale jak se k němu dostaneme nebo jej vytiskneme? Ke každému prvku v hash by se mělo přistupovat pomocí příslušného klíče, pro který bude přiřazena hodnota. Mezi každým klíčem a hodnotou v hash tedy existuje mapování jedna jedna.

Chcete-li vytisknout věk jakékoli osoby, stačí si zapamatovat jméno této osoby.

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

Možná jste se divili, proč jsem použil $hash{KeyName}, nezapomeňte, že hash je opět sbírka skalárů. Pro přístup ke každému hashovacímu prvku tedy můžeme použít $, které představuje skalární.

Příklad hash v Perlu

Poznámka: Každý hash klíče by měl být jedinečný, jinak přepíše vaši hodnotu, která byla přiřazena dříve.

Jak můžeme přiřadit hash jinému hashu? Jednoduše, stejným způsobem jako my

Můžeme také vytisknout celý hash.

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

Výstup:

Tom23

Přidejte Perl Hashe

Jak můžete vidět, již máme hash %newHash a nyní do něj musíme přidat další položky.

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

Výstup:

Jim25John26Harry27

Perl klávesa Delete

Možná budete chtít odstranit položku z hashe. Takto to můžeme udělat.

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

Delete je vestavěná funkce Perlu. Zde uvidíme příklad přiřazení hashe k poli.

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

Poznámka: Kdykoli tisknete hash nebo když ukládáte hash do pole. Pořadí se může vždy lišit. Není to vždy stejné.

Poli můžeme přiřadit pouze klíče nebo hodnoty hashe.

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

Chcete-li odstranit všechny položky v hash, můžeme přímo přiřadit hash na null.

%newHash=();# Toto předefinuje hash bez položek.

Podmíněné příkazy v Perlu

V Perlu můžeme použít podmíněné příkazy. Co jsou tedy podmíněné příkazy? Podmíněné příkazy jsou ty, kde skutečně kontrolujete, zda jsou některé okolnosti ve vašem kódu splněny.

Zamyslete se nad příkladem, kupujete nějaké ovoce a nelíbí se vám, že cena je vyšší než 100 babek. Takže pravidlo je 100 babek.

Perl podporuje dva typy podmíněných příkazů; jsou, pokud a pokud.

Perl If

Pokud bude proveden blok kódu, když je podmínka pravdivá.

Podmíněné příkazy v Perlu

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

Výstup:

5

Perl If Else

Tohle vypadá dobře. Zamysleme se nad situací, kdy $a není 5.

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

Výstup:

Hodnota je 10 —FAIL

Tímto způsobem můžeme ovládat vždy pouze jednu podmínku. Je to omezení? Ne, různé podmínky můžete ovládat také pomocí 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";
}

Výstup:

Provedený blok elsif – Hodnota je 5

Ve výše uvedeném případě bude blok elsif proveden, protože $a se rovná 5.

Mohou nastat situace, kdy selžou bloky kódu if i elsif. V tomto scénáři bude proveden blok kódu else. Ve skutečnosti můžete odstranit kontrolu kódu else, pokud nechcete zahrnout.

Perl Nested If

V tomto případě můžete použít blok kódu if v dalším bloku kódu 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";
    }

Výstup:

Uvnitř 1. jiného bloku – Hodnota je 11

Spusťte stejný kód změnou hodnoty $a; zbytek můžete zjistit.

Pokud Perl

Již máte představu, co když ano (Pokud je podmínka pravdivá, spustí se blok kódu). Pokud není opak if, pokud je podmínka nepravdivá, bude proveden blok kódu.

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

Výstup:

Uvnitř 1. jiného bloku – Hodnota je 5

Hádejte, jaký bude výstup. Máš pravdu!!!!!. Výstupem bude tiskový příkaz bloku else. Vzhledem k tomu, že podmínka v bloku kódu není pravdivá, pamatujte, že pokud bude blok spuštěn pouze v případě, že je podmínka nepravdivá. Změňte hodnotu $a a spusťte kód, uvidíte rozdíl.

Perl Použití if

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

Výstup:

Uvnitř jiný blok

Použití pokud

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

Výstup:

Uvnitř, pokud Block

Perl Loops – Control Structures

Perl podporuje řídicí struktury podobné jiným programovacím jazykům. Perl podporuje čtyři typy řídicích struktur for, foreach, while a till. Tyto příkazy používáme k opakovanému provádění nějakého kódu.

Pro smyčku Perl

Pro kód bude blok spuštěn, dokud není splněna podmínka. Vezměme si příklad, jak Perl smyčkovat pole.

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

Výstup:

Hodnota indexu pole 0 je 1

Hodnota indexu pole 1 je 2

Hodnota indexu pole 2 je 3

Hodnota indexu pole 3 je 4

Hodnota indexu pole 4 je 5

Hodnota indexu pole 5 je 6

Hodnota indexu pole 6 je 7

Hodnota indexu pole 7 je 8

Hodnota indexu pole 8 je 9

Hodnota indexu pole 9 je 10

Zde je ve výrazu for () obsaženo mnoho příkazů. Každý z nich má svůj význam.

pro ( inicializace ; podmínka; zvýšení)

Zde je další způsob použití pro.

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

Výstup:

1n

2n

3n

4n

5n

6n

7n

8n

9n

10n

Perl Foreach

Pro každý příkaz lze použít stejným způsobem jako pro; hlavním rozdílem je, že v tomto nemáme žádnou kontrolu stavu a zvyšování.

Vezměme si stejný příklad s foreach perl.

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

Výstup:

Hodnota je 1

Hodnota je 2

Hodnota je 3

Hodnota je 4

Hodnota je 5

Hodnota je 6

Hodnota je 7

Hodnota je 8

Hodnota je 9

Hodnota je 10

Foreach vezme každý prvek pole a přiřadí tuto hodnotu $var pro každou iteraci. Na totéž můžeme použít i $_.

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

Výstup:

Hodnota je 1

Hodnota je 2

Hodnota je 3

Hodnota je 4

Hodnota je 5

Hodnota je 6

Hodnota je 7

Hodnota je 8

Hodnota je 9

Hodnota je 10

To vypadá dobře pro přístup k polím. A co hashe, jak můžeme získat hash klíče a hodnoty pomocí foreach?

Foreach můžeme použít k přístupu ke klíčům a hodnotám hashe tím, že ho zacyklíme.

Smyčka For v Perlu

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

Výstup:

Mickey

Tomáš

Jerry

Možná se divíte, proč jsme ve foreach() použili klíče. Keys je vestavěná funkce Perlu, kde můžeme rychle přistupovat ke klíčům hashe. Jak je to s hodnotami? Pro přístup k hodnotám hashe můžeme použít funkci 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";
}

Výstup:

hodnota je 24

hodnota je 23

hodnota je 25

Zatímco Perl

Smyčka Perl While je řídicí struktura, kde bude blok kódu vykonáván, dokud není podmínka splněna.

Blok kódu se ukončí, pouze pokud je podmínka nepravdivá.

Vezměme si příklad pro smyčku Perl While.

Zatímco smyčka v Perlu

Zde je problém, který bude vyžadovat vstup od uživatele a nebude ukončen, dokud nebude zadáno číslo „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"

Výstup:

Hádejte číslo mezi 1 a 10

9

Hádejte číslo mezi 1 a 10

5

Hádejte číslo mezi 1 a 10

7

Hádali jste šťastné číslo 7

Ve výše uvedeném příkladu nebude podmínka while pravdivá, pokud zadáme jiný vstup než '7'.

Pokud zde vidíte, jak while funguje, blok kódu se spustí, pouze pokud je podmínka za chvíli pravdivá.

Perl na chvíli

Cyklus Do while se provede alespoň jednou, i když je podmínka v sekci while nepravdivá.

Vezměme si stejný příklad pomocí do while.

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

Výstup:

10

9

8

7

6

5

4

3

2

1

Nyní je hodnota menší než 1

Perl až do

Dokud je blok kódu podobný jako if v podmíněném příkazu. Zde se blok kódu provede pouze v případě, že podmínka v bloku dokud není nepravdivá.

Vezměme si stejný příklad, který jsme na chvíli použili.

Zde je problém, který bude vyžadovat vstup od uživatele a nebude ukončen, dokud nebude zadáno jiné jméno než 'sai'.

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

Výstup:

Zadejte jakékoli jméno sai

Perl do-dokud:

Do till lze použít pouze v případě, že potřebujeme, aby podmínka byla nepravdivá, a měla by být provedena alespoň jednou.

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

Výstup:

Zadejte libovolné jméno Howard

Zadejte jakékoli jméno Sheldon

Zadejte jakékoli jméno sai

Proveďte příklady kódů while, do-while, do a do-until, abyste viděli rozdíl.

Perl OperaTor

Co je to Operator?

Operatory v počítačovém jazyce označují akci, kterou lze provést na nějakém souboru proměnných nebo hodnot, kterým počítač rozumí. Perl začlenil většinu Operatory z jazyka C. Perl má ve srovnání s jinými programovacími jazyky mnoho operátorů. Operatory jsou kategorizovány jako aritmetické, logické, relační a přiřazovací operátory.

Aritmetický Operators:

Aritmetické operátory jsou ty, které lze použít k provádění některých základních matematických operací. Tyto aritmetické operátory jsou binární operátory, kde k provedení základní operace potřebujeme dva argumenty. Pro další základní operace můžeme použít i unární operátory; rozdíl můžete vidět na příkladech níže.

OperaTor Description Příklad

+

Operace sčítání používaná pro sčítání dvou hodnot nebo proměnných

držení hodnot

$x=5+6; # nebo

$y=6;

$z=$x+$y;

-

Odečítací operátor používaný pro odečítání dvou hodnot nebo proměnných, které mají hodnoty

$x=6-5; # nebo

$y=6;

$z=$x-$y;

*

Operátor násobení používaný pro násobení dvou hodnot nebo proměnných obsahujících hodnoty

$x=6*5; # nebo

$y=6;

$z=$x*$y;

/

Operátor dělení používaný pro dělení dvou hodnot nebo proměnných, které mají hodnoty

$ x = 36/6; # nebo

$y=6;

$z=$x/$y;

**

Exponenciální operátor použitý pro poskytnutí exponentu a získání hodnoty.

Příklad: 22 = 43 = 27

$x=5**5; # nebo

$x=4;

$y=2;

$z=$x**$y;

%

Operátor modulu slouží k získání připomenutí při dělení dvou hodnot nebo proměnných obsahujících hodnoty

$x=5%2; # nebo

$x=10;

$y=2;

$z=$x % $y;

++

Unární operátor sčítání ke zvýšení hodnoty proměnné o 1

$x=5;

$x++;

Or

++$x;

-

Unární operátor odečítání ke snížení hodnoty proměnné o 1

$x=5;

$x–; # snížení příspěvku

Or

–$x;# před snížením

Příklad pro dokončení všech výše uvedených operací.

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

Výstup:

Součet 10 a 2 je 12

Sub z 10 a 2 je 8

Mul 10 a 2 je 20

Div 10 a 2 je 5

Exp 10 a 2 je 100

Mod 10 a 2 je 0

Přiřazení Operators:

Operátory přiřazení jednoduše přiřadí hodnoty proměnným, ale je zde ještě jedna věc, kterou si zde musíme zapamatovat, operátory přiřazení také provedou aritmetické operace a přiřadí novou hodnotu stejné proměnné, na které se operace provádí.

OperaTor Description Příklad

+=

Operátor sčítání používaný pro přidání a přiřazení hodnoty stejné proměnné

$x=4;

$x+=10;

-=

Operátor odečítání používaný pro odečítání a přiřazení hodnoty stejné proměnné

$x=4;

$x-=10;

*=

Operátor násobení používaný pro přidání a přiřazení hodnoty stejné proměnné

$x=4;

$x*=10;

/=

Operátor dělení používaný pro dělení a přiřazení hodnoty stejné proměnné

$x=4;

$x/=10;

** =

Exponenciální operátor používaný pro získání exponentu a přiřazení hodnoty stejné proměnné

$x=4;

$x**=10;

%=

Operátor modulu slouží k získání připomenutí při dělení a přiřazení hodnoty stejné proměnné

$x=10;

$x%=4;

Příklad pro dokončení všech výše uvedených operací.

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

Výstup:

Přidat = 15

Sub= 10

Mul = 50

Div = 10

Logické a relační Operators:

Perl používá logické operátory k porovnání čísel a řetězců. V podmíněných příkazech se většinou používají logické operátory.

Logické a relační Operators v perlu

Logické a relační Operators v perlu

OperaTor Description

==nebo ekv

Operator slouží ke kontrole, zda jsou obě proměnné stejné

!=Nebo ne

Operator slouží ke kontrole, zda se obě proměnné neshodují

> nebo gt

Operator slouží ke kontrole zda

A je větší než B

<or lt

Operator slouží ke kontrole zda

A je menší než B.

>=nebo ge

Operator slouží ke kontrole zda

A je větší nebo rovno B

<=nebo le

Operator slouží ke kontrole zda

A je menší nebo rovno B

|| nebo nebo

Operator používaný ke kontrole, zda A nebo B drží hodnotu

&&nebo a

Operator používaný ke kontrole jak A, tak B drží hodnotu

Vezměme si příklad, kde můžeme vysvětlit všechny scénáře.

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

Výstup:

Pravda – rovná se 5 a 5

Pravda – nerovná se 6 a 7

Pravda – 7 větší než 6

Pravda – 6 méně než 7

Pravda – 6 méně než 7

Pravda – 7 větší než 6

Příklady logických operátorů můžete vidět v dalších částech.

Speciální proměnné Perlu

Co jsou speciální proměnné Perlu?

Speciální proměnné v Perlu jsou ty, které mají nějaký předem definovaný význam. Tyto proměnné jsou označeny buď skutečným jménem nebo interpunkčními symboly. Máme speciální proměnnou pro všechny proměnné podporované v Perlu, jako jsou skalární speciální proměnné, speciální proměnné pole, speciální hashovací proměnné. Většina speciálních proměnných, které používáme, jsou skaláry.

Když chceme použít speciální proměnnou s jejím jménem, ​​musíme nahrát modul Perl 'použij angličtinu', abychom interpretu Perlu explicitně řekli, že budeme používat speciální proměnné s jeho názvem.

Skalární speciální proměnné

Proměnlivý Description

$_$ARG

Toto je výchozí proměnná, která ukládá aktuální hodnoty.

$0 nebo $PROGRAM_NAME

Ukládá název souboru skriptu Perl.

$/

Oddělovač vstupních záznamů, má výchozí hodnotu '\n', což je znak nového řádku

$.

Obsahuje aktuální číslo řádku čteného souboru

$,

Oddělovač výstupních polí, používá se hlavně v příkazu print(). Ve výchozím nastavení je tato hodnota nastavena na 0, hodnotu této proměnné můžeme změnit.

$\

Výstupní oddělovač záznamů, hodnota této proměnné bude prázdná; tomu můžeme přiřadit libovolnou hodnotu, která bude použita příkazem print() při tisku výstupu.

$#

Tato proměnná se používá pro výstupní formát při tisku čísel.

$%$FORMAT_PAGE_NUMBER

Podrží aktuální číslo stránky přečteného souboru.

$=$FORMAT_LINES_PER_PAGE

Podrží aktuální délku stránky přečteného souboru.

$-$FORMAT_LINES_LEFT

Uchovává hodnotu počtu řádků zbývajících k vytištění ze stránky.

$~$FORMAT_NAME

Název formátu: Ve výchozím nastavení uchovává formát aktuálně vybraného výstupu název popisovače souboru.

$^$FORMAT_TOP_NAME

Obsahuje hodnotu formátu záhlaví obslužného programu souboru, výchozí hodnota bude _TOP následovaná názvem popisovače souboru.

$|$OUTPUT_AUTOFLUSH

Výchozí hodnota je nula; to se používá k vyprázdnění výstupní vyrovnávací paměti po každém write() nebo print().

$$

Bude obsahovat číslo běžícího procesu interpretu Perl.

$?

Stavový kód: Pipe a systémové volání. Návratový stav provedeného příkazu.

$&$MATCH

Používá se v regulárních výrazech, bude obsahovat řetězec poslední úspěšné shody vzoru.

$`$PŘEDMATCH

Při použití v regulárních výrazech bude obsahovat řetězec, kterému předchází poslední úspěšná shoda vzoru.

$'$POSTMATCH

Používá se v regulárních výrazech, bude obsahovat řetězec, který následuje poslední úspěšná shoda vzoru.

$+$LAST_PAREN_MATCH

Obsahuje řetězec poslední závorky, který odpovídá poslednímu vyhledávání vzoru.

$

$1, $2, $3…. Uchovává hodnoty vzoru v pořadí.

$[

První index: Pole, podřetězec.

$]

Verze Perlu.

$ ”

Oddělovač používaný pro prvky seznamu je standardně prázdný znak.

$;

Oddělovač dolního indexu používaný ve vícerozměrných polích

$!

V číselném kontextu vypíše číslo chyby. V kontextu řetězce vypište chybu.

$@

Bude obsahovat informace o chybě syntaxe, které se používají při použití eval().

$<

Obsahuje skutečné UID (ID uživatele) procesu spouštějícího skript.

$>

Obsahuje efektivní UID procesu spouštějícího skript.

$(

Obsahuje skutečné GID (ID skupiny) procesu spouštějícího skript.

$)

Obsahuje efektivní GID procesu spouštějícího skript.

$^D$LADĚNÍ

Obsahuje aktuální hodnotu příznaků ladění.

$ ^ C

Uchovává aktuální hodnotu příznaku, když je použit přepínač příkazového řádku –c.

$^F

Maximální hodnota deskriptoru systémového souboru je standardně nastavena na 2

$^I$INPLACE_EDIT

Obsahuje hodnotu přepínače příkazového řádku –i.

$^M

Speciální paměťový fond lze použít, když skript Perl zemře s chybou nedostatku paměti.

$^O$OSNAME

Operajsou uloženy informace o systému. 'Linux' pro systémy Linux, 'mswin32' pro Windows systémy.

$^T$BASETIME

Čas, kdy jsou skripty spuštěny v sekundách.

$^W$VAROVÁNÍ

Aktuální hodnota přepínače příkazového řádku –w. Výstražný spínač.

$ARGV

Název aktuálního souboru při použití <>.

Speciální proměnné pole:

Proměnlivý Description

@INC

Obsahuje seznam cest, kde lze při provádění aktuálního skriptu nahlížet do modulů knihovny Perl nebo skriptů. Tento @INC se používá při použití a vyžaduje příkazy k nahlédnutí do těchto cest pro moduly knihoven.

@ARGV

Ukládá předané argumenty příkazového řádku.

@_

Používá se v podprogramech při předávání parametrů podprogramům.

@F

Toto je pole, do kterého se ukládají vstupní řádky při automatickém rozdělení –a (používá se přepínač příkazového řádku).

Hash speciální proměnné:

Proměnlivý Description

%INC

Název souboru bude klíče; hodnoty budou cestou k těmto souborům. Používáno udělej, použij a požaduj.

%ENV

Systémové proměnné prostředí.

%SIG

Signals manipulátor.

Regulární výraz v Perlu

Co je regulární výraz?

Regulární výraz Perlu je dostatečně silný při porovnávání vzorců řetězců v rámci příkazů nebo skupiny příkazů. Regulární výrazy se většinou používají při analýze textu, porovnávání vzorů a mnoha dalších na základě požadavku. Máme určité operátory, které se speciálně používají při vazbě vzorů regulárních výrazů =~ a !~. Jedná se o operátory test a přiřazení.

Regulárních výrazů Operatorů

Regulárních výrazů Operators v perlu

Regulárních výrazů Operators v perlu

  • Perl Match — m//
  • Perl náhradník – s///
  • Perl Transliterate – tr///

Než půjdeme dále, potřebujeme vědět pár věcí o regulárním výrazu; existují určité věci, jako jsou meta znaky, zástupné znaky v syntaxi Perl Regex.

Char Význam

\

Speciální nebo citace

*

Odpovídá 0 nebo více znakům

+

Odpovídá 1 nebo více znakům

?

Porovnejte 0 nebo 1 znak

|

Lze použít k přizpůsobení alternativních vzorů

()

Slouží k uložení přizpůsobeného vzoru

[]

Lze předat sadu znaků. Konkrétně se používá pro číslice a abecedy.

{}

Používá se pro poskytnutí počtu časů, kdy lze zápas provést.

^

Začátek řetězce

$

Konec řetězce

\w

Používá se pro shodu jednoho znaku nebo slova, které může být alfanumerické včetně „_“

\W

Shodujte se s čímkoli jiným než alfanumerickými

\s

Používá se k přiřazení mezer

\S

Shodujte se s čímkoli jiným než mezerami

\d

Zápasová čísla. Ne desetinné hodnoty a záporné hodnoty

\D

Spojte cokoliv jiného než čísla.

\t

Odpovídající prostor na kartě

\n

Přizpůsobit nový řádek

Výše uvedené jsou sady znaků, které lze použít při porovnávání vzorů.

Podívejme se na několik příkladů.

Uvažujme situaci, kdy uživatel poskytuje nějaký vstup během provádění skriptu a my chceme zkontrolovat, zda uživatel zadal nějaké jméno jako vstup nebo ne. Musíme napsat syntaxi regulárního výrazu, abychom extrahovali vaše jméno a vytiskli to samé.

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

Výstup:

Nalezený vzor

Zde jsme zapsali regulární výraz jako /.*(Guru99).*/.* odpovídají všem znakům v řetězci. A '.' v perlu shoda regulárního výrazu odkazuje na jakýkoli znak včetně mezery.

Podívejme se, jak přesně můžeme vytvořit Regex.

Zvažte příklad řetězce více slov a číslic a speciálních symbolů, jako je tento „Ahoj všichni, toto je moje číslo: +91-99298373639“;

Regex : /^\w+\s\w+\s\w+\s\w+\s\w+\s\w+\:\+\d+\-\d+/i

Mezera mezi slovy mezera mezi slovy mezera mezi slovy mezera mezi slovy mezera mezi slovy mezera mezi slovy speciální znak : mezera speciální znak+číslice speciální znak –číslice.

Perl Match Operatorů

Operátory shody se používají ke shodě řetězce v nějakém příkazu nebo v proměnné.

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

Výstup:

pravdivý

Tento malý kód vypíše 'true', protože porovnávání vzoru perl identifikuje řetězec v proměnné. V podstatě Perl hledá text poskytnutý v // v celém řetězci, i když najde na jednom místě, vrátí 'true'. Vzor může být kdekoli v proměnné. Můžeme zkusit nahradit =~ znakem !~, abychom viděli rozdíl mezi těmito dvěma operátory.

Náhrada Perlu OperaTor

Tento operátor lze použít pro vyhledávání a nahrazování libovolného znaku buď znakem null, nebo jiným znakem.

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

Výstup:

violoncello jak se máš?

Poznámka: Ve skutečnosti můžeme použít jakýkoli řetězec odpovídající vzoru, jak jsme to udělali dříve v tomto substitučním operátoru. Zde jsme použili 'gi', g-globally, i-ignore case.

Překlad Perl OperaTor

Je to podobné jako Substitution, ale nepoužívá žádné regulární výrazy perlu, spíše můžeme přímo předat hodnotu nebo slovo, které chceme nahradit.

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

Výstup:

Ahoj krávo ty jsi

Perl File I/O

Perl byl navržen pro efektivní manipulaci se soubory a I/O operacemi. Hlavní výhoda Perlu je v analýze souborů a manipulaci se soubory. Existuje mnoho vestavěných funkcí a operátorů používaných při práci se soubory v Perlu.

V zásadě se operace se soubory, které se provádějí v Perlu, provádějí pomocí FILEHANDLE. Tento FILEHANDLE musíme definovat při otevírání souboru pro čtení nebo zápis.

V tomto tutoriálu skriptu v Perlu se naučíte-

Perl Otevřete soubor

Soubor můžeme otevřít pomocí funkce open() dostupné v Perlu.

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

Nyní jsme otevřeli soubor, nyní vyvstává otázka. Je to na čtení nebo psaní?

Perl číst soubor a Perl zapisovat soubor

Perl má určité režimy, které je třeba použít ke čtení, zápisu nebo připojení souboru.

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

Několik příkladů pro čtení souboru:

Čtení souboru v Perlu

Uvažujme, že máme soubor v perlu s názvem file.txt a obsahuje několik řádků textu. Musíme tento soubor otevřít a vytisknout.

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;

Tím se vytiskne obsah souboru na výstupní obrazovce.

Nyní napíšeme program, který vytvoří a zapíše data do souboru perl.

Zápis souboru v Perlu

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

Tím se zapíše vstup poskytnutý během běhu a vytvoří se soubor test.txt, který bude mít vstup.

Výše uvedený způsob se vždy pokusí vytvořit soubor s názvem test.txt a zapíše vstup do souboru; totéž napíšeme pro připojení souboru.

Operace File Append v Perlu

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

<

číst

+<

Čte a píše

>

Vytváří, zapisuje a zkracuje

+>

Číst, psát, vytvářet a zkracovat

>>

Píše, připojuje a vytváří

+>>

Čtěte, pište, připojujte a vytvářejte

Nyní se musíme podívat, jak číst, zapisovat a přidávat soubory pomocí základních příkladů.

Uvidíme několik dalších příkladů a dalších funkcí, které pomohou lépe porozumět souborům.

Perl Tell

Tato metoda vrátí aktuální pozici FILEHANDLER v bajtech, pokud je zadáno jinak, bude považovat poslední řádek za pozici.

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

Perl Seek

Funkce Seek je podobná systémovému volání fseek. Tato metoda se používá k umístění ukazatele souboru na určité místo zadáním bajtů následovaných buď začátkem ukazatele souboru, nebo koncem ukazatele souboru.

seek FH, bytes, WHENCE;

WHENCE je pozice ukazatele souboru na začátek. Nula jej nastaví od začátku souboru.

Příklad: Nechte soubor input.txt obsahovat některá data jako „Ahoj, toto je můj svět“.

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

Výstup:

toto je můj svět

Perl Unlink

Unlink se používá k odstranění souboru.

unlink("filename or complete file path");

Manipulace s adresáři:

Zvládneme i adresáře, přes které můžeme obsluhovat více souborů.

podívejme se, jak otevřít adresář. Můžeme použít metody opendir a 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);

Tím se vytisknou všechny dostupné soubory v tomto adresáři.

Testy souborů Perl a jejich význam

-r

Chcete-li zkontrolovat, zda je soubor/adresář čitelný pro aktuálního uživatele/skupinu

-w

Chcete-li zkontrolovat, zda je soubor/adresář zapisovatelný aktuálním uživatelem/skupinou

-x

Chcete-li zkontrolovat, zda je soubor/adresář spustitelný aktuálním uživatelem/skupinou

-o

Chcete-li zkontrolovat, zda soubor/adresář vlastní aktuální uživatel

-R

Chcete-li zkontrolovat, zda je soubor/adresář čitelný pro tohoto skutečného uživatele/skupinu

-W

Chcete-li zkontrolovat, zda do souboru/adresáře může tento skutečný uživatel/skupina zapisovat

-X

Chcete-li zkontrolovat, zda je soubor/adresář spustitelný tímto skutečným uživatelem/skupinou

-O

Chcete-li zkontrolovat, zda soubor/adresář vlastní tento skutečný uživatel

-e

Chcete-li zkontrolovat, zda existuje název souboru/adresáře

-z

Chcete-li zkontrolovat, zda soubor existuje a má nulovou velikost (vždy false pro adresáře)

-f

Chcete-li zkontrolovat, zda je položka prostý soubor

-d

Chcete-li zkontrolovat, zda je Entry adresář

-l

Chcete-li zkontrolovat, zda je vstup symbolickým odkazem

-S

Chcete-li zkontrolovat, zda je Entry zásuvka

-p

Chcete-li zkontrolovat, zda je položka pojmenovaná roura (“FIFO”)

-b

Chcete-li zkontrolovat, zda je položka speciální blokový soubor (jako připojitelný disk)

-c

Chcete-li zkontrolovat, zda je položka Položka speciální znakový soubor (jako I/O zařízení)

-u

Chcete-li zkontrolovat, zda je soubor nebo adresář setuid

-g

Chcete-li zkontrolovat, zda je soubor nebo adresář setgid

-k

Chcete-li zkontrolovat, zda má soubor nebo adresář nastaven lepivý bit

-t

Daný filehandle je TTY (protože pomocí systémové funkce isatty() nelze tímto testem otestovat názvy souborů)

-T

Chcete-li zkontrolovat, zda soubor vypadá jako „textový“ soubor

-B

Chcete-li zkontrolovat, zda soubor vypadá jako „binární“ soubor

-M

Chcete-li zkontrolovat stáří změny (měřeno ve dnech) souboru

-A

Chcete-li zkontrolovat věk přístupu (měřeno ve dnech) souboru

-C

Chcete-li zkontrolovat stáří modifikace inodu (měřeno ve dnech) souboru

Podprogram Perl

Co je to podprogram?

Podprogramy jsou podobné funkcím v jiných programovacích jazycích. Již jsme použili některé vestavěné funkce jako print, chomp, chop atd. Můžeme si psát vlastní podprogramy v Perlu. Tyto podprogramy lze zapsat kdekoli v programu; je vhodnější umístit podprogramy buď na začátek nebo na konec kódu.

Podprogram v PERL

Příklad podprogramů

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

Nyní, když víme, jak napsat podprogram, jak k němu přistupovat?

Potřebujeme přistupovat nebo volat podprogram pomocí názvu podprogramu s předponou '&'.

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

Předávání parametrů Perlu a argumentů Perlu

Jsou napsány podprogramy nebo funkce perlu, aby do nich umístily znovu použitelný kód. Většina opakovaně použitelného kódu vyžaduje předání parametrů do podprogramu. Zde se naučíme, jak můžeme předat argumenty podprogramu.

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.

Výstup:

3 je předaná hodnota

@_ je speciální proměnná pole, která ukládá argumenty předané podprogramům.

Perl Shift

Můžeme také použít klíčové slovo 'shift', které posouvá jeden parametr po druhém do proměnné nebo $_[0],$_[1]… což je individuální prvek pole @_

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

Výstup:

ahoj je prošel

Podprogramy se obvykle používají v objektově orientovaném programování a také na místech, kde můžete umístit více znovupoužitelného kódu.

Hlavní funkcí podprogramů je provést nějakou úlohu a vrátit výsledek znovu použitelného kódu.

Výukový program PERL pro začátečníky – kompletní průvodce

Můžeme vrátit hodnotu z podprogramu pomocí klíčového slova return.

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

Výstup:

11

$result bude mít hodnotu přidaných $a a $b.

Můžeme také předat hashe a pole přímo do podprogramu.

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

Výstup:

1a2b

Můžeme také vrátit hash nebo pole.

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;

Výstup:

Uvnitř podprogramu2b1aPo podprogramu call2b1a

Formát Perl

Perl má mechanismus, pomocí kterého můžeme generovat zprávy. Pomocí této funkce můžeme při tisku na obrazovce Výstup nebo v souboru vytvářet sestavy přesně tak, jak chceme. Jednoduchý formát lze napsat pomocí funkcí printf nebo sprintf dostupných v Perlu.

printf "%05d\n", 30;

To bude zahrnovat úvodní nuly před číslem 30, takže celkový počet číslic je 5. Totéž lze použít pro sprintf.

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

Pomocí printf a sprintf můžeme získat většinu formátů Perl. V případě hlášení to bude obtížné realizovat.

Formát Perl

Příklad přehledu:

================================================== =========================
Jméno Adresa Věk Telefon
================================================== =========================
Krishna Chennai 24 929309242
Shruthi Chennai 24 929309232

Výše uvedené je příklad sestav, které potřebujeme vytisknout stejným způsobem v Perlu. Toho lze dosáhnout pomocí perl printf a perl sprintf. Lze jej efektivně implementovat pomocí formátu.

Formát lze deklarovat níže uvedeným způsobem.

format FORMATNAME=FORMATLIST.

Zde budeme používat konkrétní metodu zápisu pro tisk dat na výstupní obrazovku nebo do souboru.

Symbol Description

@

Používá se k reprezentaci začátku držáku pole

>

Pravé zarovnání textu

<

Zarovnání textu doleva

|

Zarovnání na střed

#

Číselné, pokud je zadáno více #. Předpokládá se jako komentář, pokud je zadáno jediné #

.

Desetinná čárka

^

Začátek držáku pole lze také použít pro víceřádkový a také pro zalamování slov

~

Pokud je proměnná prázdná, řádek by měl být prázdný

@*

Více řádků.

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

Spusťte kód, abyste viděli výstup.

Používáme symbol @ k určení začátku držitele pole nebo řetězce, '<' každého znaku.

Pro tisk na standardní výstup používáme STDOUT. Můžeme to změnit na handler souboru, který používáme k zápisu dat do souboru.

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

Můžeme nahradit '<' za '>' nebo '|' pro změnu zarovnání textu.STDOUT_TOP se používá k návrhu záhlaví formátu.Totéž můžeme použít také s obslužným programem souboru pomocí FH_TOP(FH je obslužný program souboru).Tímto výstupem bude formát souboru, se kterým pracujeme na.

Standardy kódování Perl

Každý programátor bude mít svůj vlastní smysl pro psaní kódu pomocí určitých standardů; tyto standardy by měly být dostatečně známé, aby jiný programátor mohl kód správně pochopit a podporovat.

Kódovací standardy v Perlu

Kódovací standardy v Perlu

Psaní kódu je jednoduché a snadné. Problém nastává, když je potřeba jej udržovat v pozdějších fázích. Při psaní kódu je třeba dodržovat správné pokyny a standardy kódování. Perl také definuje určité standardy, které budou užitečné pro programátory při psaní kódu. Při psaní kódu je vhodné načíst modul 'strict' a 'warnings'. Každý z těchto modulů má svůj význam. Strict nás přinutí deklarovat proměnnou před použitím a také zjistí, zda je ve vašem kódu přítomno nějaké holé slovo. Modul Warnings lze alternativně použít předáním volby '-w' interpretu Perl v shebang. Na výstupní obrazovce se vytisknou varování.

#!/usr/bin/perl –w

Níže je několik seznamů norem.

  • Použijte modul 'přísné' a 'varování'.
  • Odeberte proměnnou, která se nepoužívá.
  • Názvy proměnných by měly být srozumitelné ostatním uživatelům. Příklad: $name, @fileData atd.
  • Při kódování skriptu je vyžadována dokumentace.
  • Nekódujte napevno žádné hodnoty, raději je zkuste načíst dynamicky nebo požádejte uživatele o zadání během běhu. (Cesta k souboru, Názvy souborů).
  • Maximalizujte opětovné použití kódu. Zkuste znovu použitelný kód vložit do podprogramů.
  • U podprogramů by měla být uvedena celá jména.
  • Podprogramy je třeba napsat s příslušnými komentáři a dokumentací.
  • Vždy inicializujte proměnné.
  • Vždy zkontrolujte návratové kódy pro systémová volání. Otevření souboru se může, ale nemusí, stát, návratový kód zde zobrazí chybový stav, pokud soubor neexistuje.

    Př: open(FH,

  • Podprogram by měl vždy vrátit hodnotu.
  • Otevřete kudrnaté ve stejném řádku.
  • Jeden řádek BLOCK lze umístit do jednoho řádku se složenými.
  • Používejte štítky během LOOPS, bylo by snadné opustit smyčku, kdykoli je to nutné.
  • Použijte podtržítko, když jsou dlouhé fráze slov psány jako název proměnné nebo podprogram.
  • Zkuste při kódování použít jednoduchý regulární výraz.

Perfektní příklad s kódovacími standardy:

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

Zpracování chyb v Perlu

Co je to výjimka?

Výjimkou je událost, která nastane během provádění programu, která pozastaví nebo ukončí váš program.

Vypořádání se s chybou

Zpracování chyb je takové, které musí každý programátor dbát při programování. Perl také poskytuje techniky zpracování chyb, pomocí kterých můžeme chyby zachytit a podle toho s nimi naložit.

Zpracování chyb v Perlu

Zpracování chyb v Perlu

Existuje mnoho způsobů, jak zkontrolovat chyby v programu. Musíme prozkoumat návratové kódy funkce, kterou kód používáme. Pokud jsme schopni zpracovat tyto návratové kódy správně, pak lze dosáhnout většiny zpracování chyb.

Co se vrátí v případě systémových volání?

V případě systémových volání se návratový stav uloží do dvou speciálních proměnných $? A $!

$! – Tím se zachytí číslo chyby nebo číslo chyby spojené s chybovou zprávou.

$? – Tím bude zachována funkce návratového stavu system().

Pomocí operátoru Perl nebo Logical

Pro zpracování chyb při používání systémových volání můžeme použít logiku nebo operátor.

ex:

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

Tím se soubor otevře v režimu čtení, pokud soubor existuje.

Co když soubor chybí?

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

Funkce Eval dokáže zpracovat fatální chyby, chyby v době kompilace, chyby za běhu a ty chyby, které v určitém okamžiku ukončí váš kód.

Funkce Perl Eval může mít blok kódu nebo výraz. Evans považuje vše, co je v něm umístěno, za řetězec.

Zvažte situaci volání podprogramu, který není definován ve skriptu. V této situaci se skript ukončí sdělením „nedefinovaný podprogram &XYZ, tuto chybu lze ošetřit ve funkci eval.

Existuje mnoho použití evals bloku; jedno takové použití je, když chceme za běhu načíst modul, který je specifický pro operační systém.

Příklad: Dělení nulou způsobí závažnou chybu; abychom to zvládli, můžeme umístit kód do bloku evals.

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

Výstup:

chyba syntaxe v C:\Users\XYZ\Text.pl řádek 8, poblíž „“)

{“

Provádění C:\Users\XYZ\Text.pl bylo přerušeno kvůli chybám při kompilaci.

Příklad: eval pomocí příkazu perl die.

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

Výstup:

Chycen: Umírání v dílčím testu

Pomocí Perlu Zkuste

Perl nepodporuje bloky try, catch a nakonec kód jako jiné programovací jazyky. Stále je můžeme používat načtením externího modulu Perl.

použijte Try::Tiny;

Pomocí toho můžeme umístit váš kód do bloku try a zachytit chybu v bloku varování.

Místo $@ použitého v eval Try::Tiny používá $_.

# ošetřit chyby pomocí handleru catch

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

Konečně použití.

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

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

Výstup:

foo na C:\Users\XYZ\Text.pl řádek 4.

Tímto způsobem můžeme použít try, catch a nakonec.

zkuste { # prohlášení }

zachytit {# prohlášení }

konečně { # prohlášení };

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
};

Výstup:

Or

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

Výstup:

Programování Perl Socket

Co je to zásuvka?

Výukový program PERL pro začátečníky – kompletní průvodce

Soket je médium, jehož prostřednictvím mohou dva počítače komunikovat v síti pomocí síťové adresy a portů.

Předpokládejme, že A (Server) a B (Klient) jsou dva systémy, které musí pro spouštění některých programů vzájemně komunikovat pomocí Sockets.

Abychom to mohli implementovat, musíme vytvořit sokety v A (Server) i B (Klient), A bude ve stavu příjmu a B bude ve stavu odesílání.

A (Server):

Zde si server přeje přijmout spojení od B (Klient) a provést některé úkoly a odeslat výsledek zpět B (Klient). Když spustíme kód, operační systém v A se pokusí vytvořit soket a naváže jeden port na tento soket. Poté bude poslouchat od odesílatele, kterým je B.

B (Klient).

Zde si klient přeje poslat nějaký program ze svého systému do A (Serveru) ke zpracování. Když spustíme kód, operační systém v B se pokusí vytvořit soket pro komunikaci s A (Server), B musí specifikovat IP adresu a číslo portu A, ke kterému se B chce připojit.

Pokud to půjde dobře, oba systémy budou interagovat a vyměňovat si informace přes jeden port. Perl také podporuje programování soketů.

Perl má nativní API, přes které lze implementovat sockety. Aby to nebylo jednoduché, existuje mnoho modulů CPAN, pomocí kterých píšeme soketové programy.

Operace serveru:

  • Vytvořit zásuvku
  • Svázat zásuvku s adresou a portem
  • Poslouchejte soket na této adrese portu
  • Přijměte připojení klienta, který se pokouší připojit pomocí portu a IP serveru
  • Provádějte operace

Klient Operaakce:

  • Vytvořit zásuvku
  • Připojte se k serveru pomocí jeho adresy portu
  • Provádějte operace

Klientský server Operav Perlu

socket.io

Jedná se o jeden modul pro programování socketů, který je založen na objektově orientovaném programování. Tento modul nepodporuje typ sítě INET používaný v sítích.

IO::Zásuvka::INET:

Tento modul podporuje doménu INET a je postaven na IO::Sockets. Všechny metody dostupné v IO::Sockets jsou zděděny v modulu INET.

Klient a server používající protokol TCP:

TCP je protokol orientovaný na připojení; tento protokol budeme používat pro programování socketů.

Než budeme pokračovat dále, podívejme se, jak můžeme vytvořit objekt pro modul IO::Socket::INET a vytvořit soket.

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

Nová metoda v modulu IO::Socket::INET přijímá hash jako vstupní parametr do podprogramu. Tento hash je předdefinovaný a my potřebujeme pouze poskytnout hodnoty klíčům, které chceme použít. Existuje seznam klíčů používaných tímto hashem.

PeerAddr

Adresa vzdáleného hostitele

PeerHost

Synonymum pro PeerAddr

PeerPort

Vzdálený port nebo služba

LocalAddr

Adresa místní vazby hostitele

localhost

Synonymum pro LocalAddr

LocalPort

Port místní vazby hostitele

Proto

Název protokolu (nebo číslo)

Typ

zásuvka typu

Poslouchat

Velikost fronty pro poslech

ReuseAddr

Před vázáním nastavte SO_REUSEADDR

Opakované použití

Před vázáním nastavte SO_REUSEADDR

ReusePort

Před vázáním nastavte SO_REUSEPORT

Broadcast

Před vázáním nastavte SO_BROADCAST

Timeout

Hodnota časového limitu pro různé operace

MultiHomed

Vyzkoušejte všechny adresy pro hostitele s více adresami

Blokování

Určete, zda bude připojení v režimu blokování

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

Poznámka:

Při programování soketů budeme muset nejprve spustit Server.pl a poté klient.pl jednotlivě v různých příkazových řádcích, pokud běžíme na místním hostiteli.

Co je to Perl Modules and Packages

Moduly a balíčky spolu úzce souvisí a jsou nezávislé. Balíček: Balíček v Perlu je také známý jako jmenný prostor a obsahuje všechny jedinečné proměnné, jako jsou hash, pole, skaláry a podprogramy. Modul: Modul je kolekce opakovaně použitelného kódu, do kterého zapisujeme podprogramy. Tyto moduly lze načíst do programů v jazyce Perl, aby bylo možné využívat podprogramy napsané v těchto modulech.

Co jsou moduly Perl?

Standardní moduly se nainstalují během instalace Perlu na jakýkoli systém. CPAN: Komplexní Perl Archive Network – Globální úložiště modulů Perl. Naše vlastní přizpůsobené moduly Perl, které můžeme napsat sami. V podstatě modul po načtení v libovolném skriptu exportuje všechny své globální proměnné a podprogramy. Tyto podprogramy mohou přímo volat, jako by byly deklarovány v samotném skriptu. Perl Moduly mohou být zapsány s příponou .pm k názvu souboru Př: Foo.pm. Modul lze napsat pomocí „balíčku Foo“ na začátku programu.

Základní modul 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;

Žádný výstup

Abychom mohli tento modul Perl používat, musíme jej umístit do aktuálně funkčního adresáře.

Můžeme načíst modul Perl pomocí požadavku nebo použití kdekoli v kódu. Hlavní rozdíl mezi vyžadovat a používat je vyžadovat načtený modul během běhu a používat načítání během kompilace.

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

Zde, ve výše uvedeném příkladu, přistupujeme k podprogramům pomocí plně kvalifikovaného názvu modulu.

K balíčku můžeme také přistupovat pomocí 'použít aritmetiku'.

Vývozce:

Tento modul má výchozí funkci importu metod.

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

Pole @EXPORT lze použít k předání seznamu proměnných a podprogramů, které budou standardně exportovány volajícímu modulu.

Pole @EXPORT_OK lze použít k předání seznamu proměnných a podprogramů, které budou exportovány na vyžádání, kde uživatel musí specifikovat při načítání modulu.

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

Ve výchozím nastavení bude exportován podprogram add. Metoda odečítání nebude exportována, pokud není specifikována při načítání modulu.

Objektově orientované programování v Perlu

V této části se naučíme, jak vytvořit objektově orientované moduly v Perlu. Nejprve se podívejme, co je to za objekt? Objekt je instance, pomocí které můžeme přistupovat, upravovat a lokalizovat některá data v libovolném modulu Perlu. Nejde o nic jiného, ​​než o to, aby váš stávající balík Perl, proměnné a podprogramy fungovaly jako třída, objekty a metody ve vztahu k jiným programovacím jazykům.

Vytvořit třídu

Jak vytvářet moduly již víme z předchozího tématu. Účelem třídy je ukládat metody a proměnné. Modul Perl bude mít podprogramy, které jsou metodami. Potřebujeme přístup k těmto proměnným a objektům podprogramů.

Perl Constructor

Konstruktor v Perlu je metoda, která provede a vrátí nám odkaz s názvem modulu označeným jako odkaz. Tomu se říká požehnání třídy. Pro požehnání perlské třídy používáme konkrétní proměnnou, což je 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;

Nová metoda používaná jako konstruktor pro třídu. Tento konstruktor nám vytvoří objekt a vrátí se do skriptu, který volá tento konstruktor.

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

Zde musíme pochopit, jak objekt vznikl. Kdykoli se snažíme vytvořit objekt pro třídu, musíme použít celý název třídy. Předpokládejme, že třída perl je umístěna v nějaké lib\Math\Arithmetic.pm. A pokud chceme přistupovat k této třídě perl z adresáře lib, musíme při volání skriptu poskytnout celou cestu ke třídě.

use lib::Math::Arithmetic;

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

Takto probíhá vytváření objektů v Perlu.

@INC:

Jak skript v Perlu ví, kde existuje modul knihovny? Perl zná pouze aktuální adresář skriptu a cestu k vestavěné knihovně Perlu. Kdykoli použijeme modul Perl, který není umístěn v aktuálním adresáři nebo cestě knihovny Perl, skript vždy selže. O @INC, toto je pole, které obsahuje všechny cesty k adresářům, kde musí hledat moduly Perl. Zkuste tento příkaz provést a uvidíte, jaký bude výstup.

perl –e "print @INC"

To poskytne určitý výstup a to je cesta, kde budou dostupné moduly lib. Kdykoli použijeme jakýkoli nový knihovní modul, musíme říci interpretovi Perlu, aby se podíval na konkrétní místo, kde je modul Perl dostupný.

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

Udělejte to jako první řádek kódu. To řekne vašemu tlumočníkovi, aby se podíval na tuto cestu. nebo použití

lib Arithmetic; # List here is your Perl Module location

Perl Destructor

Destruktor objektu je standardně volán na konci a před ukončením skriptu. To se používá ke zničení vašich objektů z paměti.


PERL V/s Shell Scripting

Úvod do programování PERL

  • Programování v Perlu nezpůsobuje problémy s přenositelností, což je běžné při použití různých shellů ve skriptování shellu.
  • Ošetření chyb je v Perlu velmi snadné
  • Na Perlu můžete snadno psát dlouhé a složité programy díky jeho rozlehlosti. To je na rozdíl od Shell, který nepodporuje jmenné prostory, moduly, objekty, dědičnost atd.
  • Shell má k dispozici méně opakovaně použitelných knihoven. Nic ve srovnání s CPAN v Perlu
  • Shell je méně bezpečný. Volá externí funkce (příkazy jako mv, cp atd. závisí na použitém shellu). Naopak Perl odvádí užitečnou práci při používání vnitřních funkcí.

Jak se PERL používá v automatizačním testování

Perl je široce používán v automatizaci. Nemusí to být nejlepší programovací jazyky na světě, ale nejlépe se hodí pro určité typy úloh. Pojďme diskutovat o tom, kde a proč se Perl používá Testování automatizace.

Testování úložiště

Testování úložiště pomocí Perlu

Co je úložiště? Data uložená v Souborech.

Předpokládejme, že máme související úložiště Testovací případ kde musíme zapsat data na jeden oddíl, přečíst je a ověřit, že jsou data zapsána správně.

To lze provést ručně, ale může ruční tester provést totéž 10000 XNUMXkrát? Bude to noční můra! Potřebujeme automatizaci

Nejlepším nástrojem pro automatizaci čehokoli souvisejícího s úložištěm je Perl kvůli jeho technikám zpracování souborů, REGEX a výkonnou analýzu souborů, která ve srovnání s jinými programovacími jazyky spotřebovává nejmenší dobu provádění.

Proč potřebujeme testovat úložiště? Přemýšlejte o velkých datových centrech, kde budou data nepřetržitě proudit z jednoho systému do druhého s 1000 uloženými záznamy za sekundu. Testování robustnosti takového skladovacího mechanismu je zásadní.

Mnoho společností jako HP, Dell, IBM a mnoho výrobců serverů používá Perl jako rozhraní pro testování funkčnosti v doménách Storage a Networking. NetApp je jednou z takových společností, která kompletně pracuje na Storage a používá Perl jako programovací jazyk k automatizaci testovacích případů.

Pokud se zajímáte o Perl Automation, pak by bylo vhodné dozvědět se o Storage & Networking Concepts.

Testování serveru a sítě:

Testování serveru a sítě pomocí Perlu

Testování serveru a sítě pomocí Perlu

PERL je široce používán při sledování provozuschopnosti serverů a výkonu.

Představte si datové centrum, které má 100 hostitelů (serverů). Musíte se připojit ke každému hostiteli a provádět některé příkazy na dálku. Chcete také restartovat systém a zkontrolovat, až se vrátí online.

Ruční provádění tohoto úkolu pro všech 100 hostitelů bude noční můra. Ale můžeme to snadno automatizovat pomocí PERL

Navrhněte kroky k dosažení výše uvedené automatizace pomocí PERL

  1. Vezměte vstup ze souboru o informacích o hostiteli, jako jsou (IP, uživatelské jméno a heslo).
  2. Pomocí Net::SSH2 se připojte ke každému systému a vytvořte kanál pro provádění příkazů.
  3. Spusťte sadu požadovaných příkazů, např.: ls, dir, ifconfig,ps atd.
  4. Restartujte systém.
  5. Počkejte 10 minut, než se systém spustí.
  6. Otestujte systém pomocí modulu Net::Ping a vytiskněte stav.

Výše uvedený scénář nakódujeme.

Vezměme si soubor nazvaný Input.txt, který bude uchovávat kompletní informace o všech hostitelích, ke kterým se potřebujeme připojit a provést příkaz.

Vstup.txt

192.168.1.2 heslo root

192.168.1.3 heslo root

192.168.1.4 kořenový kořen123

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

Web Testování

Perl není omezen pouze na testování úložiště a sítě. Můžeme také provádět webové testování pomocí PERL. WWW-Mechanizovat je jeden modul používaný pro testování webu. V zásadě nespustí žádný prohlížeč pro testování funkčnosti webových aplikací, spíše využívá zdrojový kód html stránek.

Můžeme také provádět testování pomocí prohlížeče Selenium IDE, RC, webový ovladač. Perl je podporován pro Selenium.

\n”; #toto podrží zbývající řetězec po dokončení shody.
tisk "