Perl oktatóanyag: Változó, tömb, hashek programozási példával

Mi az a Perl?

Perl egy magas szintű, általános célú, értelmezett, dinamikus programozási nyelv. A Perl egy olyan kifejezés, amely a „gyakorlati kinyerési és jelentési nyelvet” jelenti, annak ellenére, hogy a Perlnek nincs mozaikszó. Larry Wall vezette be 1987-ben. A Perl nyelvet kifejezetten szövegszerkesztésre tervezték. De ma már széles körben használják különféle célokra, beleértve a Linux rendszeradminisztrációt, a hálózati programozást, a webfejlesztést stb.

Programozási nyelvek áttekintése

Fogalmazzuk meg egyszerűen. Míg a számítógépek csak a 0-t és az 1-et értik (bináris nyelv/gépi nyelv/ [alacsony szintű nyelv]), nekünk, embereknek nagyon nehéz bináris nyelven programozni. A Perl egy olyan programozási nyelv, amely természetes nyelvi elemeket használ, olyan szavakat, amelyeket a köznyelvben használnak, és ezért az emberek könnyebben megértik [magas szintű nyelv]. Most van egy probléma; a számítógépek nem képesek megérteni a magas szintű nyelveket, amelyeket mi, emberek könnyen megértünk. Ehhez szükségünk van valamire, ami le tudja fordítani a magas szintű nyelvet alacsony szintű nyelvre. Itt tolmács jön a segítségünkre. A tolmács egy olyan szoftver, amely a magas szintű nyelven írt programot alacsony szintű nyelvre konvertálja, hogy a számítógép megértse és végrehajtsa a programban írt utasításokat. Ezért a Perl egy értelmezett programozási nyelv.

Hol használják a Perlt?

A Perl szkriptnyelv ereje számos területen megvalósítható. A Perl legnépszerűbb felhasználási területe a webfejlesztés. A Perl számos feladat automatizálására is szolgál a webszervereken, és egyéb adminisztrációs feladatokat is, automatikusan generál e-maileket és tisztítja meg a rendszereket. A Perl-t továbbra is eredeti céljára használják, azaz adatok kinyerésére és jelentések készítésére. Jelentést tud készíteni az erőforrás-felhasználásról, és ellenőrizni tudja a hálózat biztonsági problémáit. Ennek köszönhetően a Perl népszerű nyelvvé vált a webfejlesztésben, a hálózatépítésben és a bioinformatikában is. Mindezek mellett a perl CGI programozásra is használható.

A Perl képalkotásra és -manipulációra is használható. A telneten, FTP-n stb. keresztül történő hálózatépítésen kívül a grafikus felhasználói felület létrehozása, a VLSI elektronika és a levelezőszűrők létrehozása a kéretlen levelek visszaszorítása érdekében a Perl néhány használati esete.

A Perl az OOP (objektumorientált programozás) gyakorlatok megvalósításáról is ismert, és támogatja az öröklődés minden formáját (egyszerű, többszörös és gyémánt), a polimorfizmust és a beágyazást. A Perl elég rugalmas ahhoz, hogy egyszerre támogassa a procedural és az OOP gyakorlatokat. A Perl extra modulokkal is rendelkezik, amelyek lehetővé teszik a beírt kód írását vagy használatát/újrafelhasználását Python, PHP, PDL, TCL, oktáv, Java, C, C++, Basic, Ruby és Lua a Perl-szkriptben. Ez azt jelenti, hogy kombinálhatja a Perl-t ezekkel az extrákkal programozási nyelvek inkább átírja a meglévő kódot.

A Perl programozási nyelv alkalmazásai

A Perl programozási nyelv alkalmazásai

Miért használja a Perlt?

Igaz, hogy vannak más programozási nyelvek is, amelyekkel minden fent leírt dolgot meg lehet csinálni, akkor miért kellene kifejezetten Perl-t használni? A Perl nagyon könnyen megtanulható, különösen, ha rendelkezik számítógépes programozási múlttal. A Perl-t úgy tervezték, hogy az emberek könnyen írhassák és megértsék, ahelyett, hogy megkönnyítenék a számítógépes feldolgozást. Reguláris kifejezéseket használ. Ez a nyelv természetes stílusa eltér más programozási nyelvektől, amelyek speciális nyelvtant és szintaxist használnak; ezért a Perl nagyon rugalmas, és nem kényszerít rád a megoldás vagy a probléma kitalálására vonatkozó különös gondolkodásmódot. A Perl rendkívül hordozható. Bármilyen operációs rendszeren futhat, amelyre Perl interpreter van telepítve, tehát platformfüggetlen. Mind Linux OperaA tingrendszerek Perl-lel vannak telepítve, így már a dobozból is elindíthatja a Perl kódolását Linux alatt. Ez ellentétben a Shell szkriptekkel, ahol a kód a használt Linux disztribúció ízével változik, így egyre kevésbé hordozható. A kis specifikus feladatok a Perlben nagyon egyszerűek és gyorsak. Ebben a kezdőknek szóló Perl-oktatóanyagban megtudhatja, hogyan kódolhat kis, gyors programokat meghatározott feladatokhoz. Vegyünk egy egyszerű példát a klasszikus Hello World programra, amely bármilyen UNIX-alapú programozási nyelv tanulásának megkezdésére szolgál:

Példa: Perl hello world

A Perl egyszerű példája

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

output:

Helló Világ!

A fenti két kódsor a Hello, world! Most nem volt túl egyszerű és gyors? C nyelvtudással rendelkező hallgatók, C++ tudni fogja, hogy sokkal több kódsorra van szükség ahhoz, hogy ugyanazt a kimenetet megkapjuk ezeken a nyelveken.

Talán azon tűnődsz, hogy miért A Perl olyan híres a weben. Ez egyszerű, mivel a legtöbb dolog, ami a weben történik, a TEXT-ből származik, és a Perl nagyon jó a szövegfeldolgozásban. Ha összehasonlítjuk a Perl-t bármelyik nyelvvel, akkor a Perl lesz a legjobb nyelv, amely jó fájlkezelésben, szövegfeldolgozásban és kimeneti jelentésekben.

A Perl egyik legjobb előnye, hogy az szabadon felhasználható

A Perl közösség szilárdan hisz abban, hogy a szoftvernek szabadon elérhetőnek, szabadon módosíthatónak és szabadon terjeszthetőnek kell lennie. A Perl közösségből több önkéntes is arra törekszik, hogy a programozási nyelvet a lehető legjobban javítsa.

A Perl előnyei és hátrányai

Előnyök: Hátrányok:

A Perl előnyei

A Perl hátrányai

  • Más programozási nyelvekhez képest a Perl a legerősebb a szövegkezelésre és -elemzésre
  • Ez egy értelmezett nyelv gyors végrehajtási idővel, mivel nincs szükség Perl-szkript fordítására
  • Egyszerű és könnyen programozható és érthető.
  • Objektum orientált.
  • A CPAN könyvtár megkönnyíti a Perl fejlesztését (erről a téma későbbi részében többet megtudunk).
  • Webfejlesztésben használják, többnyire fizetési átjárókhoz.
  • Az automatizálásban és a legtöbb hálózattal és tárolással kapcsolatos dolog tesztelésére használják.
  • A többi programozási nyelvhez képest minimális a GUI támogatás.
  • Komplex könyvtári modulokra kell hivatkoznia, amelyeket nem olyan könnyű megérteni (Ne ijedjen meg, ha már tudja, hogyan kell csinálni a dolgokat, minden könnyű lesz).
  • Az összetett minták megértéséhez tapasztalat szükséges.

Kezdjük el

A Perl történetéről és a Perlben való kódoláshoz szükséges számítógépes programozás alapvető fogalmairól elegendő tudás birtokában itt az ideje, hogy belemerüljünk a Perl használatába. A következő fejezetből megtudhatja, hogyan állíthatja be a Perl-t a rendszeren, és hogyan készülhet fel a kódolási útra a Perlben. Ez a Perl-szkriptezési oktatóanyag a Linuxot fogja használni operációs rendszerként, amelyet a tanulók a Perlben való kódoláshoz fognak használni.

Perl letöltése és telepítése - Windows, Mac és Linux

Hogyan szerezhető be a Perl?

Jó hír valószínűleg megvan!

De ha még nem találja a rendszerén, akkor is ingyenesen beszerezheti.

Ha meg szeretné tudni, hogy telepítve van-e már a Perl, lépjen be a parancssorba, és írja be: perl -v

Hogyan lehet letölteni a Perl-t

A parancs megjeleníti a Perl verzióját, ha az telepítve van. Ebben az esetben a verzió v5.14.2. De ha nem… ne ess pánikba…

UnixPERL oktatóanyag kezdőknek – teljes útmutató Már telepítve van Előre telepítve érkezik a Perl, bár előfordulhat, hogy frissítenie kell a legújabb verzióra.
Mac OS PERL oktatóanyag kezdőknek – teljes útmutató Már telepítve van Az OSX előre telepített Perl-lel érkezik, bár előfordulhat, hogy frissítenie kell a legújabb verzióra
WindowsPERL oktatóanyag kezdőknek – teljes útmutató Telepíteni kell Két opció áll rendelkezésre

  1. A Strawberry Perl a Perl nyílt forráskódú bináris terjesztése a Windows OS. Tartalmaz egy fordítót és előre telepített modulokat, amelyek lehetővé teszik az XS CPAN modulok közvetlenül a CPAN-ból történő telepítését
  2. Az ActiveState perl biztosítja a Perl bináris disztribúcióját (sok platformhoz), valamint saját Perl csomagkezelőt (PPM)

Perl frissítése Linuxon:

Ha frissítenie kell a Perl verziót, akkor csak egyetlen parancssort írjon be

sudo apt-get install perl

és lazíts. A többiről majd gondoskodunk. Csak győződjön meg arról, hogy van aktív internetkapcsolata.

Frissítse a PERL-t Linuxon

Frissítse a PERL-t Linuxon

Perl telepítése ehhez Windows:

Először töltse le az Active Perl-t innen link. Kövesse ezeket a lépéseket az ActivePerl telepítéséhez Windows rendszer. Lásd az alábbi képernyőképeket ugyanerről.

Lépés 1: A telepítő letöltése és a telepítés megkezdése után az alábbi ablak jelenik meg, a folytatáshoz kattintson a Tovább gombra.

Hogyan telepítsük a Perl-t Windows

Lépés 2: A telepítés folytatásához fogadja el a licencszerződést.

Hogyan telepítsük a Perl-t Windows

Lépés 3: Az alábbiakban különböző csomagok találhatók, amelyek telepítésre kerülnek. Alapértelmezés szerint az összes ki lesz jelölve. Az egyetlen különbség a PPM (Perl Package Manager). Ez az Active Perl által biztosított segédprogram, amellyel külső Perl-modulokat vagy -könyvtárakat telepíthet a rendszerbe. A folytatáshoz kattintson a Tovább gombra.

Perl telepítése Windows

Lépés 4: Ezek különböző típusú Perl-kiterjesztések, amelyek Perlhez használhatók. Leginkább .Pl, .Plx és .Pm fájlokat fogunk használni Perlhez. A Perl modulok alapvetően a .Pm kiterjesztést használják a könyvtári fájlra való hivatkozáshoz. Válassza ki az összes lehetőséget, és kattintson a Tovább gombra.

Perl telepítése Windows

Lépés 5: Kattintson a Telepítés gombra a telepítés folytatásához.

Perl telepítése Windows

Lépés 6: A telepítés után hajtsa végre a „Perl –v” parancsot, hogy ellenőrizze, hogy a Perl sikeresen telepítve van-e a rendszerben.

A PERL telepítés bekapcsolva Windows

Sok dolgot meg kell beszélni a Perl környezet beállításához mind Linuxon, mind pedig Windows, mivel ez a telepítés nem sok könyvtárfájlt tartalmaz majd. Ezeket manuálisan kell telepíteni. Ezeket manuálisan is telepítheti a CPAN (Comprehensive Perl Archive Network) vagy a PPM-et, amely csak perl Windows esetén működik. De ezek a fájlok nem kötelezőek a kódolás megkezdéséhez Perlben.

Ezen a Windows-beállításon kívül használhatja Windows A Linux alrendszer 10-es új funkciója Windows felett, és perl kód futtatására használható

Az első Perl program

Hello world!

Perl példa: Hello World

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

Ne aggódjon, ha nem érti ezt a szöveget. Hamarosan minden kiderül. Gyere és nézd meg soronként:

#!/usr/bin/perl		

Ez elmondja a OperaA rendszer a /usr/bin/perl címen található programmal végrehajtja ezt a fájlt. Néhány IDE-nek nincs szüksége erre a sorra. Ha ez elengedhetetlen, akkor ide kell írnia a tolmács elérési útját. Emlékezik! Ennek a speciális sornak a program elején kell lennie, és #-től kell kezdődnie! figyelmeztetések használata; Ez egy másik speciális parancs, amely arra utasítja az értelmezőt, hogy jelenítsen meg minden figyelmeztetést, pl. -w, amely globálisan aktiválja a figyelmeztetéseket.

print "Hello World";		

A nyomtatási utasítás szöveget ír a képernyőre. A sor végén lévő pontosvessző jelzi a perl értelmezőnek, hogy az utasítás befejeződött. A Perl kódban minden utasítás végére pontosvesszőt kell tenni. Jegyezze meg az idézőjelet (“). A nyomtatási oktatáshoz szükséges. Mentse el a fenti szkriptet firstprog.pl néven

On Windows

Ha telepítve van a Strawberry, egyszerűen kattintson a Futtatás gombra. A parancssori felületet is futtathatja, és a konzolra írhatja:

C:\> perl path\firstprog.pl		

vagy ha a perl.exe nem található az útvonalon:

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

Linux/Unix rendszeren

Csak meg kell nyitnia a terminált, és be kell írnia:

perl firstprog.pl		

Ha nem tudja futtatni a programot, ellenőrizze, hogy jogosult-e a futtatására. Írja be a terminálba:

chmod +x firstprog.pl		

A program most már végrehajtható és futásra kész. A végrehajtáshoz írja be:

./firstprog		

Telepítse a cpan mínusz modulokat

A modulok olyan kódkészletek, amelyek több programban általános műveleteket végrehajtó feladatok elvégzésére szolgálnak. Ha perl modulokat használ, nem kell átírnia a kódokat ugyanazon művelet végrehajtásához. A Perl használhatja az ilyen külső kódkönyvtárakat. Az egyik legjobb könyvtár a CPAN. A Comprehensive Perl rövidítése Archive Network, és hatalmas mennyiségű Perl modult tartalmaz, amelyeket használhat. Ez egy nagyszámú fejlesztő közössége vagy hálózata, akik hozzájárulnak az ilyen modulokhoz. Ha telepíti a CPAN modulok támogatását a perl modulban, akkor kihasználhatja a CPAN modulokat, és megkönnyítheti munkáját. A legtöbb Perl modul Perlben van írva, némelyik XS-t használ (C-ben írják), ezért C-fordítóra van szükség (ezt a beállítást könnyű megszerezni – ne essen pánikba. A modulok függhetnek más moduloktól (majdnem mindig CPAN-tól) és nem telepíthető ezek nélkül (vagy egy adott verzió nélkül). Érdemes alaposan elolvasni az alábbi opciók dokumentációját Szerezzen be, csomagolja ki, építse és telepítse a modulokat a CPAN-ból, hogy megkönnyítse a többi modul telepítését (később köszönjük a telepítést). App-cpanminus perl modulok, a parancssorba írja be:

cpan App::cpanminus

cpan App::cpanminus Győződjön meg arról, hogy rendelkezik internetkapcsolattal a perl modulok letöltése és telepítése közben.

cpan mínusz modulok telepítése

Most telepítsen bármilyen modult:

cpan –i <Module_Name>.		

Lássunk egy példát a File::Data (Ez egy interfész a fájladatok eléréséhez) modul telepítésére.

cpan mínusz modulok telepítése

Perl változó

Most a változókról fogunk beszélni. Elképzelhet olyan változót, mint egy konténer, amely egy vagy több értéket tartalmaz. A meghatározás után a változó neve ugyanaz marad, de az érték vagy értékek újra és újra változnak.

A változóknak 3 típusa van:

A változók típusai a Perlben

A Perl változóinak típusai

A legegyszerűbbek a skalárok, és ez a mai témánk

Skaláris Változó

Az ilyen típusú változó egyetlen értéket tartalmaz.

A neve egy dollárjellel és egy Perl azonosítóval kezdődik (ez a változónk neve).

Skaláris változó a Perlben

Skaláris változó a Perlben

Elnevezési

Ha ismeri a többi programozási nyelvet, akkor tudja, hogy vannak bizonyos szabályok a változók elnevezésére vonatkozóan. Hasonlóképpen, a Perlnek három szabálya van a skalárok elnevezésére.

  1. Minden skalárnév egy $-val kezdődik. Könnyű megjegyezni, hogy minden név előtagjaként $. Tekintsd úgy, mint egy $ skalárt.
  2. Mint a PHP. az első $ karakter után, amely a Perlben különleges, alfanumerikus karakterek, pl. a-tól z-ig, A-tól Z-ig és 0-tól 9-ig megengedettek. Az aláhúzás karakter is megengedett. Az aláhúzás segítségével ossza fel a változóneveket két szóra. "De az első karakter nem lehet szám"
  3. Annak ellenére, hogy számok lehetnek a név részei, nem jöhetnek közvetlenül a $ után. Ez azt jelenti, hogy a $ utáni első karakter vagy ábécé vagy aláhúzás. A C/ből érkezőkC++ a háttérnek azonnal fel kell tudnia ismerni a hasonlóságot. Példák

Perl példa:

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

Ezek azonban nem törvényes skalárváltozónevek.

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

Az általános szabály szerint ha a Perlnek csak egy van valamiből, az skalár. A skalárok leolvashatók az eszközökről, és felhasználhatjuk a programjainkra.

Kétféle skaláris adattípus

  1. Numbers
  2. Strings

Numbers:

Az ilyen típusú skaláris adatokban a következőket adhatjuk meg:

  • egész számok, egyszerűen egész számok, például 2, 0, 534
  • lebegőpontos számok, valós számok, például 3.14, 6.74, 0.333

Számváltozók a Perlben

Megjegyzés: Általában a Perl értelmező az egész számokat lebegőpontos számoknak tekinti. Például, ha 2-t ír a programjaiba, a Perl 2.0000-nek fogja látni

Egész literálok:

Ez egy vagy több számjegyből áll, amelyeket adott esetben plusz vagy mínusz előz meg, és aláhúzásjeleket tartalmaz.

Perl példák:

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

Amint látja, semmi különös. De hidd el, ez a leggyakoribb típusú skalár. Mindenhol ott vannak.

Lebegőpontos literálok:

Számjegyekből, opcionálisan mínuszból, tizedesvesszőből és kitevőből áll.

Perl példák:

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

Lebegőpontos literálok a Perlben

Oktális, hexadecimális és bináris ábrázolás:

A decimális rendszer alternatívája. Engedjék meg, hogy megmutassam az oktális, hexadecimális és bináris ábrázolást. Egy rövid táblázat bemutat minden fontos információt erről a furcsa stílusról:

Reprezentáció Bázis folytatta
octal 8 0 (nulla)
Hexadecimális 16 0x
Kétkomponensű 2 0b

Perl példák:

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

Mindezek a Perl értékek ugyanazt jelentik. A Perl nem tárolja az értékeket ugyanabban a formátumban. Ezeket a hexadecimális, bináris, oktális értékeket belsőleg decimálissá konvertálja.

A hozzárendelés a skaláron végzett leggyakoribb művelet, és nagyon egyszerű. Perl ezt az egyenlőségjelet használja. Elveszi a kifejezés értékét a jobb oldalról, és ezt az értéket adja a változónkhoz.

Nézzünk példákat:

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

Sőt, nem csak számot, hanem kifejezést is beírhat a változóba.

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

Strings

Strings: Ez is nagyon egyszerű típusú skalár.

Egy karakterlánc maximális hossza a Perlben a számítógép memóriájának méretétől függ. A karakterlánc mérete nincs korlátozva, tetszőleges számú karakter, szimbólum vagy szó alkothatja a karakterláncot. A legrövidebb karakterláncban nincsenek karakterek. A leghosszabb képes kitölteni az egész rendszermemóriát. A Perl programok teljes egészében 7 bites ASCII karakterkészletben írhatók. A Perl lehetővé teszi bármilyen 8 vagy 16 bites karakterkészlet hozzáadását is. nem ASCII karakterek a string literálokon belül. A Perl az Unicode UTF-8 támogatását is hozzáadta.

A karakterláncok típusai a Perlben

A számokhoz hasonlóan kétféle karakterlánc létezik:

  • Egyszeres idézőjeles karakterlánc literálok
  • Double string literálokat idéz

Egy idézőjeles karakterlánc-literálok

Egyszeres idézőjelbe zárják azokat az adatokat, amelyeket szó szerint kívánnak érteni. Egy rövid példa, és mindennek világosnak kell lennie:

Perl példák:

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

output:

ez $num

Itt az idézőjelek miatt a $num értéket nem veszik figyelembe, és a '$', 'n', 'u' és 'm' karakterek hozzáadódnak a $txt értékéhez

Double-idézett karakterlánc-literálok

Double idézőjelek közé tartozik az adatok, amelyeket interpolálni kell a feldolgozás előtt. Ez azt jelenti, hogy a megtisztított karakterek és változók nem egyszerűen szó szerint kerülnek be a későbbi műveletekbe, hanem a helyszínen kiértékelődnek. Az Escape karakterek újsorok, tabulátorok stb. beszúrására használhatók.

Perl példák:

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

output:

ez a 7

Itt a dupla idézőjelek miatt a $num értéke hozzáadódik a $txt értékéhez

Double-idézőjel interpolálja a skalár- és tömbváltozókat, de nem a hash-eket. Másrészt használhat dupla idézőjeleket a tömbök és a hashek szeleteinek interpolálására.

Titokzatos \n

Fontolja meg a következő programot

Perl példák:

print "hello \n";

output:

szia

A Perl nem csak a 'hello\n'-t jeleníti meg, hanem csak a 'hello'-t. Miért? Mert a '\n' egy speciális jel, és azt jelenti, hogy új sorra szeretne lépni, miközben megjeleníti a szöveget a programban. nyomtatja ki a „helló\n új sor”; Következő kérdés: van más különleges jel? Igen! De ne aggódj - csak néhány. Ellenőrizze az alábbi táblázatot

Construct Leírás
\n új sor
\r visszatérés
\t lap
\f formfeed
\b backspace
\a csengő
\e menekülés
\ 007 bármely oktális ASCII érték (itt, 007 = csengő)
\x7f bármilyen hexadecimális érték (itt, 7f = törlés)
\\ visszavágás
\ ” kettős idézet
\l kisbetűs következő betű
\L az összes következő betűt kisbetűvel \E-ig
\u nagybetűs következő betű
\U az összes következő betűt nagybetűvel \E-ig
\E Végezze el a \L, \U

Tudom, nem „csak néhány” létezik… De hidd el, csak tudnod kell

Strings Változó

Ez ugyanaz a művelet, amelyet a számok hozzárendelésében látunk. A Perl az egyenlőségjel jobb oldaláról kapja meg a karakterláncunkat, és ezt a karakterláncot egy változóba helyezi.

Perl példák:

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

output:

bemutató315

Amint látja, számokat és karakterláncokat is elhelyezhet ugyanabban a változóban. A változóknak nincs osztálya.

Karakterlánc összefűzése (pont):

Az összefűzési operátor "." két vagy több húrt egyesít. Emlékezz! Ha a karakterlánc idézőjeleket, kocsivisszaadásokat, fordított perjeleket tartalmaz, ezeket a speciális karaktereket fordított perjellel kell megszabadítani.

Példák Perl ' ' változóra:

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

output:

Tom anyja kedvenc macskája

A húrok

A(z) „$a”, „$b” összefűződik és a „$c”-ben tárolódik a „.” operátor.

A végén…

Átváltás között Numbers és karakterláncok:

Mint tudják, a Perl szükség szerint automatikusan konvertálja a számokat karakterláncokká. Honnan tudja Perl, hogy most mire van szükségünk? Ez egyszerű – minden az operátortól függ (az operátorokról később beszélünk, csak fogadjuk el, hogy sok operátor van, számok és karakterláncok eltérőek) Ha egy operátor számot vár, a Perl az értéket számként fogja használni . Ha egy operátor karakterláncot vár, a Perl az értéket karakterláncként fogja használni. Más szóval, nem kell aggódnia az ilyen típusú átalakítás miatt. Rövid példa és mindennek világosnak kell lennie:

Perl példák:

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

output:

71

a $karakterlánc értékét egész számmá alakítjuk, és hozzáadjuk a $szám értékéhez.

Az összeadás eredménye, 71, a $eredményhez van rendelve.

Egy változó hatóköre – Access Modifiers

A programban bárhol deklarálhatunk skalárt. De meg kell adni egy hozzáférés módosítót

3 típusú módosító van

  1. my
  2. helyi
  3. mi

Saját: Ezzel bármilyen változót deklarálhat, amely a blokkon belül specifikus. azaz a göndör fogszabályzókon belül.

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

Nincs kimenet

A program kimenete nem lesz semmi!

PERL oktatóanyag kezdőknek – teljes útmutató

A fenti példában látni fogja, hogy két változó van deklarálva, az egyik az if blokkon belül van ($var_2), a másik pedig az If blokkon kívül ($var). A blokkon kívül deklarált változó elérhető lesz az if blokknak, de az if blokkon belül deklarált változó nem lesz elérhető a külső program számára.

Lokális: Ezzel ténylegesen maszkolhatjuk ugyanazokat a változók értékeit különböző értékekre anélkül, hogy ténylegesen megváltoztatnánk a változó eredeti értékét, tegyük fel, hogy van egy $a változónk, amelyhez az 5-ös érték van hozzárendelve, akkor ténylegesen megváltoztathatja annak a változónak az értékét ugyanazt a változót a helyi kulcsszó használatával újra deklarálni anélkül, hogy megváltoztatná a változó eredeti értékét, ami 5. Nézzük meg, hogyan működik ez egy példán.

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

A fenti program kimenete így lesz.

helyi, $var = 3

globális, $var = 5

Így megváltoztathatjuk a változó értékét anélkül, hogy az eredeti értéket befolyásolnánk.

Mi: Ha egy változót a „our” hozzáférés-módosítóval deklaráltunk, az a teljes csomagban használható. Tegyük fel, hogy van egy Perl modulunk vagy egy test.pm csomagunk, amelynek van egy változója, amelynek hatóköre our. Ez a változó bármely olyan szkriptben elérhető, amely ezt a csomagot használja.

Ha komolyan gondolja a Perl-ben való programozást, kezdje a programját ezzel

#!/usr/local/bin/perl

szigorúan használja;

Ez segít jobb és tisztább kód megírásában. A 'use strict' bekapcsolja a szigorú pragmát, amely arra készteti, hogy a kulcsszavammal deklarálja a változóit.

Ez egy jó programozási gyakorlat

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

Eredmény: Hiba

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

output:

10

Perl Array

Mi az a Perl Array?

A tömb egy speciális típusú változó, amely az adatokat lista formájában tárolja; minden elem elérhető az indexszámmal, amely minden egyes elemnél egyedi lesz. A tömbben számokat, karakterláncokat, lebegő értékeket stb. tárolhat. Ez jól néz ki, hogyan hozhatunk létre tömböt Perlben? A Perlben tömböt definiálhat a „@” karakterrel, amelyet a megadni kívánt név követ. Vegyük fontolóra egy tömb meghatározását a Perlben.

@tömböm;

Így definiálunk egy tömböt Perlben; esetleg arra gondol, hogyan kell adatokat tárolnunk benne. Az adatok tömbben való tárolásának különböző módjai vannak. Ez attól függ, hogyan fogja használni.

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

output:

ABCD

Ez egy 4 elemből álló tömb.

A tömb indexe 0-tól kezdődik és a maximális deklarált méretig ér, ebben az esetben a maximális indexméret 3.

Perl tömb példa

Perl tömb példa

A fenti módon is deklarálhatunk egy tömböt; az egyetlen különbség az, hogy az adatokat egy tömbben tárolja, és a szóközt tekinti határolónak. Itt a qw() idézetet jelent. Ennek a funkciónak a jelentősége az, hogy szólistát állítson elő. A qw-t többféleképpen használhatja egy tömb deklarálására.

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

output:

abcdpqrsvxyz

Tegyük fel, hogy értéket szeretne rendelni az 5-hözth egy tömb eleme, hogyan fogjuk ezt megtenni.

$tömb [4] ='e';

Szekvenciális tömb

A szekvenciális tömbök azok, amelyekben szekvenciálisan tárolja az adatokat. Tegyük fel, hogy 1-10 számot vagy ábécét szeretne tárolni egy tömbben. Ahelyett, hogy az összes betűt begépelné, próbálkozzon az alábbiak szerint:

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

output:

12345678910

Perl tömb mérete

Van egy tömbünk, amely már elérhető, és nem tudja, mekkora a tömb, tehát hogyan lehet megtalálni.

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

Megtudhatjuk-e egy tömb méretét függvények használata nélkül? Igen.

@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

output:

5

5

Dinamikus tömb

A fenti módszert egy tömb deklarálására hívjuk statikus tömbök, ahol tudod egy tömb méretét.

Mi az a Dynamic Array?

A dinamikus tömbök azok, amelyeket érték megadása nélkül deklarál. Tehát pontosan mikor tárolunk értékeket ebben a tömbben? Egyszerű, futás közben tároljuk őket. Itt van egy egyszerű program erre.

Ehhez a feladathoz néhány beépített Perl függvényt fogunk használni.

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

output:

Ez

fajta dyn

mikrofon

rr

y

A felosztási függvény a karakterlánc tartalmát egy tömbre osztja fel a hozzá adott határoló alapján. Ez a függvény a határolót is eltávolítja a karakterláncból, ebben az esetben ez 'a';

Push, Pop, shift, unshift Perl tömböknél:

Ezek a függvények a Perlben használhatók tömbelemek hozzáadására/törlésére.

  • Perl Push: tömbelemet ad egy meglévő tömb végéhez.
  • Perl Pop: eltávolítja az utolsó elemet a tömbből.
  • Perl Shift: eltávolítja az első elemet a tömbből.
  • Perl Unshift: egy elemet ad a tömb elejére.

Tömbfüggvények a Perlben

Lássunk egy példát, ahol az alábbi függvényeket használhatjuk.

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

output:

1.: Hétfő Kedd

2. amikor push : H K Sze Cs

3. amikor unshift : P H K Sze Cs

4. amikor pop : P H K Sze

5. amikor műszak: H Kedd

Perl Hashes

Miért van szükségünk Hash-ra?

A skalárokról és a tömbökről már az előző részekben tanultunk.

Pontosan mit csinálnak a skalárok? Csak egész számokat és karakterláncokat tárol.

Mit csinálnak pontosan a tömbök? Ez egy skalárgyűjtemény, ahol egy tömb minden elemét indexek segítségével érheti el. De jó ötlet tömböt használni, ha több száz és ezer rekordja van? Elfelejtjük, hogy melyik indexnek milyen értéke van. Ennek a helyzetnek a leküzdésére van valami, mint a perl hash.

Mik azok a hashek?

Egy hash-ba annyi skalár is belefér, amennyit a tömb elfér. Az egyetlen különbség az, hogy nincs indexünk, hanem kulcsaink és értékeink. Kivonat deklarálható, a %-al kezdve, majd a hash nevével. Nézzünk egy példát, hogyan definiálhatunk egy Perl hash-t, és hogyan különböztethetjük meg ezt a tömbtől

Vegyünk egy példát három emberre, és életkorukat egy tömbben ábrázoljuk.

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

output:

Sainath33Krishna24Shruthi25

Így nehéz meghatározni az egyes életkorokat, mivel emlékeznünk kell az összes személy nevének és életkorának indexére. Lehet, hogy egyszerű, ha 3 neved van, de ha 1000 vagy több? Tudod a választ.

Hashes a Perlben

Ezt egy hash segítségével leküzdhetjük.

Hash példa:

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.

output:

Sainath33Krishna24Shruthi25Sainath33Krishna24Shruthi25

Most bejelentettük a hash-t, nagyszerű!! De hogyan lehet hozzáférni vagy kinyomtatni? A hash minden eleméhez hozzá kell férni a hozzá tartozó kulccsal, amelyhez érték lesz rendelve. Tehát van egy-egy leképezés a kulcs és az érték között a hashben.

Bármely személy életkorának kinyomtatásához csak emlékeznie kell az adott személy nevére.

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

Gondolhattad, miért használtam a $hash{KeyName} kulcsot, ne feledd, a hash ismét skalárok gyűjteménye. Tehát használhatjuk a skalárt jelentő $-t az egyes hash elemek eléréséhez.

Példa a Hash-re a Perlben

Megjegyzés: A hash minden kulcsának egyedinek kell lennie, különben felülírja a korábban hozzárendelt értéket.

Hogyan rendelhetünk egy hash-t egy másik hash-hez? Egyszerű, ugyanúgy, mint mi

A teljes hash-t is kinyomtathatjuk.

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

output:

Tom23

Adja hozzá a Perl hash-t

Amint láthatja, már van egy %newHash hash, és most további bejegyzéseket kell hozzáadnunk.

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

output:

Jim25John26Harry27

Perl Delete billentyű

Érdemes lehet törölni egy bejegyzést a hashből. Ezt így tehetjük meg.

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

A törlés a Perl beépített funkciója. Itt láthatunk egy példát egy hash hozzárendelésére egy tömbhöz.

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

Megjegyzés: Amikor kivonatot nyomtat, vagy ha kivonatot tárol egy tömbben. A sorrend mindig eltérő lehet. Nem mindig ugyanaz.

Egy tömbhöz csak kulcsokat vagy hash-értékeket rendelhetünk.

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

A hash összes bejegyzésének eltávolításához közvetlenül hozzárendelhetjük a hash-t nullához.

%newHash=();# Ez újradefiniálja a hash-t bejegyzések nélkül.

Perl feltételes utasítások

Használhatunk feltételes utasításokat a Perlben. Tehát mik azok a feltételes állítások? A feltételes állítások azok, amelyekben ténylegesen ellenőrzi, hogy bizonyos körülmények teljesülnek-e a kódban.

Gondolj egy példára, ha veszel néhány gyümölcsöt, és nem szereted, ha az ára több mint 100 dollár. Tehát itt a szabály 100 dollár.

A Perl kétféle feltételes utasítást támogat; azok ha és ha nem.

Perl If

Ha a kódblokk végrehajtásra kerül, ha a feltétel igaz.

Perl feltételes utasítások

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

output:

5

Perl Ha mást

Ez jól néz ki. Gondoljunk egy olyan helyzetre, amikor $a nem 5.

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

output:

Az érték 10 – FAIL

Így egyszerre csak egy feltételt tudunk szabályozni. Ez egy korlátozás? Nem, különféle feltételeket is szabályozhat az if… elsif … else használatával.

Perl Else Ha

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

output:

Végrehajtott elsif blokk – Az érték 5

A fenti esetben az elsif blokk úgy lesz végrehajtva, hogy $a egyenlő 5-tel.

Előfordulhatnak olyan helyzetek, amikor az if és az elsif kódblokkok is meghiúsulnak. Ebben a forgatókönyvben az else kód blokk kerül végrehajtásra. Valójában kiküszöbölheti az else kód ellenőrzését, ha nem szeretné belefoglalni.

Perl Beágyazott Ha

Ebben az esetben az if kód blokkot használhatja még egy if kód blokkban.

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:

Az 1. másik blokkon belül – Az érték 11

Ugyanezt a kódot hajtsa végre $a értékének megváltoztatásával; a többit megtudhatod.

Perl Hacsak nem

Már van egy ötleted, hogy mi van, ha igen (ha a feltétel igaz, akkor végrehajtja a kódblokkot). Hacsak nem az if ellentéte, kivéve ha a kódblokk végrehajtásra kerül, ha a feltétel hamis.

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:

Az 1. másik blokkon belül – Az érték 5

Találd ki, mi lesz a kimenet. Igazad van!!!!!. A kimenet az else blokk print utasítása lesz. A feltétel miatt, hacsak a kódblokk nem igaz, ne feledje, hacsak a blokk csak akkor fut le, ha a feltétel hamis. Módosítsa az $a értékét, és futtassa a kódot, látni fogja a különbséget.

Perl Az if használata

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

output:

Belül más blokk

Hacsak nem

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

output:

Belül, hacsak nem Block

Perl hurkok – Vezérlési struktúrák

A Perl támogatja a többi programozási nyelvhez hasonló vezérlési struktúrákat. A Perl négyféle vezérlőstruktúrát támogat: foreach, while és till. Ezeket az utasításokat valamilyen kód ismételt végrehajtására használjuk.

Perl ciklushoz

A kód esetében a blokk addig fut, amíg a feltétel teljesül. Vegyünk egy példát egy tömb Perl-hurkolására.

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

output:

A 0. tömbindex értéke 1

A 1. tömbindex értéke 2

A 2. tömbindex értéke 3

A 3. tömbindex értéke 4

A 4. tömbindex értéke 5

A 5. tömbindex értéke 6

A 6. tömbindex értéke 7

A 7. tömbindex értéke 8

A 8. tömbindex értéke 9

A 9. tömbindex értéke 10

Itt a () kifejezésben sok állítás szerepel. Mindegyiknek megvan a maga jelentése.

for ( inicializálás ; feltétel; növelés)

Itt van egy másik felhasználási módja a.

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

output:

1n

2n

3n

4n

5n

6n

7n

8n

9n

10n

Perl Foreach

A for minden utasítás ugyanúgy használható, mint a for; a fő különbség az, hogy ebben nincs állapotellenőrzés és -növelés.

Vegyük ugyanezt a példát a foreach perl-lel.

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

output:

Az érték 1

Az érték 2

Az érték 3

Az érték 4

Az érték 5

Az érték 6

Az érték 7

Az érték 8

Az érték 9

Az érték 10

A Foreach egy tömb minden elemét veszi, és minden iterációhoz hozzárendeli a $var értéket. Ugyanerre használhatjuk a $_-t is.

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

output:

Az érték 1

Az érték 2

Az érték 3

Az érték 4

Az érték 5

Az érték 6

Az érték 7

Az érték 8

Az érték 9

Az érték 10

Ez jól néz ki a tömbök eléréséhez. Mi a helyzet a hashekkel, hogyan szerezhetünk kivonatkulcsokat és értékeket a foreach használatával?

A foreach segítségével elérhetjük a hash kulcsait és értékeit hurkolással.

Perl ciklushoz

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

output:

Mickey

Tomi

csárda

Felmerülhet benned a kérdés: Miért használtuk a kulcsokat a foreach()-ben. A Keys a Perl beépített funkciója, amellyel gyorsan elérhetjük a hash kulcsait. Mi a helyzet az értékekkel? Az értékek függvényt használhatjuk a hash értékeinek eléréséhez.

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

output:

az érték 24

az érték 23

az érték 25

Perl While

A Perl While ciklus egy vezérlőstruktúra, ahol a kódblokkot addig hajtják végre, amíg a feltétel igaz.

A kódblokk csak akkor lép ki, ha a feltétel hamis.

Vegyünk egy példát a Perl While ciklusra.

While ciklus a Perlben

Itt van egy probléma, amely a felhasználó bevitelét igényli, és nem fog kilépni a 7-es számig.

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

output:

Találj ki egy számot 1 és 10 között

9

Találj ki egy számot 1 és 10 között

5

Találj ki egy számot 1 és 10 között

7

Kitaláltad a 7-es szerencseszámot

A fenti példában a while feltétel nem lesz igaz, ha '7'-től eltérő bevitelt adunk meg.

Ha látja, hogy a while hogyan működik itt, a kódblokk csak akkor fut le, ha a feltétel igaz.

Perl do-while

A Do while ciklus akkor is legalább egyszer végrehajtódik, ha a while szakasz feltétele hamis.

Vegyük ugyanezt a példát a do while használatával.

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

output:

10

9

8

7

6

5

4

3

2

1

Most az érték kisebb, mint 1

Perl addig

Az Until kódblokk hasonló a feltételes utasításban szereplő, ha nem. Itt a kódblokk csak akkor fut le, ha a blokkig feltétel hamis.

Vegyük ugyanazt a példát, amelyet egy ideig használtunk.

Itt van egy probléma, amelyhez a felhasználó bevitele szükséges, és nem lép ki addig, amíg a megadott név nem 'sai'.

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

output:

Írjon be bármilyen nevet sai

Perl-ig:

A Do till csak akkor használható, ha hamis feltételre van szükségünk, és legalább egyszer végre kell hajtani.

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

output:

Írjon be bármilyen Howard nevet

Írjon be bármilyen Sheldon nevet

Írjon be bármilyen nevet sai

Hajtsa végre a while, do-while, till és do-ig példakódokat a különbség megtekintéséhez.

Perl Operator

Mi a Operator?

OperaA számítógépes nyelvben a torok olyan műveletet jelölnek, amely végrehajtható a számítógép által megértett változók vagy értékek bizonyos halmazán. A Perl beépítette a legtöbbet Operatorok C nyelvből. A Perlnek sok operátora van a többi programozási nyelvhez képest. OperaA torokat aritmetikai, logikai, relációs és hozzárendelési operátorok közé soroljuk.

Számtan Operators:

Az aritmetikai operátorok azok, amelyek segítségével néhány alapvető matematikai műveletet végre lehet hajtani. Ezek az aritmetikai operátorok bináris operátorok, ahol két argumentumra van szükségünk egy alapművelet végrehajtásához. Más alapműveletekhez is használhatunk unáris operátorokat; az alábbi példákban láthatja a különbséget.

Operator Leírás Példa

+

Két érték vagy változó hozzáadására használt összeadási művelet

értékek tartása

$x=5+6; # vagy

$y=6;

$z=$x+$y;

-

Kivonás operátor, amely két érték vagy változó értékét tároló érték kivonására szolgál

$x=6-5; # vagy

$y=6;

$z=$x-$y;

*

Szorzási operátor két érték vagy változó értékeinek szorzásához

$x=6*5; # vagy

$y=6;

$z=$x*$y;

/

Osztási operátor két érték vagy változó értékeinek felosztására szolgál

$x=36/6; # vagy

$y=6;

$z=$x/$y;

**

A kitevő megadásához használt exponenciális operátor adja meg az értéket.

Pl.: 22 = 43 = 27

$x=5**5; # vagy

$x=4;

$y=2;

$z=$x**$y;

%

A modulus operátor az emlékeztetőt kapja két érték vagy változó értéket tartó felosztása során

$x=5%2; # vagy

$x=10;

$y=2;

$z=$x % $y;

++

Unáris összeadási operátor egy változó értékének 1-gyel történő növeléséhez

$x=5;

$x++;

Or

++$x;

-

Unáris Kivonás operátor egy változó értékének 1-gyel történő csökkentéséhez

$x=5;

$x–; # bejegyzés csökkenése

Or

–$x;# előcsökkentés

Példa a fenti műveletek végrehajtásához.

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

output:

10 és 2 összeadása 12

A 10 és a 2 a 8

10 és 2 mulája 20

A 10-es és a 2-es osztódása 5

A 10 és 2 Exp értéke 100

A 10 és 2 modja 0

Átruházás Operators:

A hozzárendelési operátorok egyszerűen értékeket rendelnek a változókhoz, de van még egy dolog, amit itt meg kell jegyeznünk: a hozzárendelési operátorok számtani műveleteket is végrehajtanak, és ugyanahhoz a változóhoz rendelik az új értéket, amelyen a műveletet végrehajtják.

Operator Leírás Példa

+=

Hozzáadás operátor, amely az érték hozzáadására és ugyanahhoz a változóhoz való hozzárendelésére szolgál

$x=4;

$x+=10;

-=

Kivonási operátor, amely a kivonásra és az érték hozzárendelésére szolgál ugyanahhoz a változóhoz

$x=4;

$x-=10;

*=

Szorzási operátor, amely az érték hozzáadására és ugyanazon változóhoz való hozzárendelésére szolgál

$x=4;

$x*=10;

/=

Osztás operátor, amely az elosztásra és az érték hozzárendelésére szolgál ugyanahhoz a változóhoz

$x=4;

$x/=10;

** =

Exponenciális operátor a kitevő lekérésére és az érték hozzárendelésére ugyanahhoz a változóhoz

$x=4;

$x**=10;

%=

Modulus operátor, amely az osztás során emlékeztetőt kap, és ugyanannak a változónak az értékét rendeli hozzá

$x=10;

$x%=4;

Példa a fenti műveletek végrehajtásához.

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

output:

Add = 15

Al= 10

Mul = 50

oszt = 10

Logikai és relációs Operators:

A Perl logikai operátorokat használ a számok és karakterláncok összehasonlítására. A feltételes utasításokban legtöbbször logikai operátorokat használnak.

Logikai és relációs Operatorok Perlben

Logikai és relációs Operatorok Perlben

Operator Leírás

==vagy ekv

Operator segítségével ellenőrizheti, hogy mindkét változó egyenlő-e

!=Vagy nem

Operator annak ellenőrzésére szolgál, hogy a két változó nem egyenlő-e

> vagy gt

Operator szokta ellenőrizni, hogy

A nagyobb, mint B

<or lt

Operator szokta ellenőrizni, hogy

A kisebb, mint B

>=vagy ge

Operator szokta ellenőrizni, hogy

A nagyobb vagy egyenlő B-vel

<=vagy le

Operator szokta ellenőrizni, hogy

A kisebb vagy egyenlő B-vel

|| vagy vagy

OperaA vagy a B tartási értékének ellenőrzésére szolgál

&&vagy és

OperaAz A és B tartási értékének ellenőrzésére szolgál

Vegyünk egy példát, ahol meg tudjuk magyarázni az összes forgatókönyvet.

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

output:

Igaz – egyenlő 5 és 5

Igaz – nem egyenlő 6 és 7

Igaz – 7 nagyobb, mint 6

Igaz – 6-tal kevesebb, mint 7

Igaz – 6-tal kevesebb, mint 7

Igaz – 7 nagyobb, mint 6

A logikai operátorokra a későbbi szakaszokban talál példákat.

Perl speciális változók

Mi az a Perl speciális változó?

A Perl speciális változói azok, amelyek valamilyen előre meghatározott jelentéssel bírnak. Ezeket a változókat valódi névvel vagy írásjelekkel jelöljük. Van egy speciális változónk az összes Perl által támogatott változóhoz, mint például a speciális skaláris változók, a tömb speciális változói, a speciális hash változók. Az általunk használt speciális változók többsége skalár.

Ha a speciális változót a nevével együtt akarjuk használni, akkor be kell töltenünk egy Perl modult "use English", hogy kifejezetten mondjuk a Perl interpretátornak, hogy speciális változókat fogunk használni a Name használatával.

Skaláris speciális változók

Változó Leírás

$_$ARG

Ez az alapértelmezett változó, amely az aktuális értékeket tárolja.

$0 vagy $PROGRAM_NAME

Tárolja a Perl szkript fájlnevét.

$/

A bemeneti rekordelválasztó, ennek alapértelmezett értéke '\n', ami egy újsor karakter

$.

Az éppen olvasott fájl sorszámát tartalmazza

$,

Kimeneti mező elválasztó, ezt főleg a print() utasítás használja. Alapértelmezés szerint ennek értéke 0, ennek a változónak az értékét módosíthatjuk.

$\

Kimeneti rekordelválasztó, ennek a változónak az értéke üres lesz; ehhez tetszőleges értéket rendelhetünk, amit a print() utasítás fog használni a kimenet kinyomtatása során.

$#

Ez a változó a kimeneti formátumhoz használatos számok nyomtatása során.

$%$FORMAT_PAGE_NUMBER

Megtartja az olvasott fájl aktuális oldalszámát.

$=$FORMAT_LINES_PER_PAGE

Megtartja az olvasott fájl aktuális oldalhosszát.

$-$FORMAT_LINES_LEFT

Megtartja az oldalról nyomtatandó sorok számának értékét.

$~$FORMAT_NAME

Formátum neve: Alapértelmezés szerint az aktuálisan kiválasztott kimenet formátumát tartalmazza, a fájlkezelő nevét.

$^$FORMAT_TOP_NAME

A fájlkezelő fejlécformátumának értékét tartalmazza, alapértelmezés szerint a _TOP értéke, majd a fájlkezelő neve.

$|$OUTPUT_AUTOFLUSH

Az alapértelmezett érték nulla; ez a kimeneti puffer kiürítésére szolgál minden write() vagy print() után.

$$

A Perl értelmező futó folyamatszámát fogja tárolni.

$?

Állapotkód: Cső- és rendszerhívás. A végrehajtott parancs visszatérési állapota.

$&$MATCH

A reguláris kifejezésekben használva ez tartalmazza az utolsó sikeres mintaegyeztetés sztringjét.

$`$ PREMATCH

A reguláris kifejezésekben használva ez az utolsó sikeres mintaegyeztetés előtti karakterláncot tartalmazza.

$'$POSTAMERKÉS

A reguláris kifejezésekben használva ez egy karakterláncot tartalmaz, amelyet az utolsó sikeres mintaegyeztetés követ.

$+$LAST_PAREN_MATCH

Az utolsó mintakeresésnek megfelelő utolsó zárójel karakterláncát tartja.

$

1 dollár, 2 dollár, 3 dollár… A minta illesztett értékeit sorrendben tartja.

$[

Első index: Tömb, egy részkarakterlánc.

$]

A Perl egy verziója.

$”

A listaelemekhez használt elválasztó alapértelmezés szerint szóköz.

$;

Többdimenziós tömbökben használt alsó index-elválasztó

$!

Numerikus környezetben kiírja a hibaszámot. Karakterlánc-kontextusban nyomtassa ki a hibát.

$@

Megtartja a szintaktikai hibainformációkat, amelyeket az eval() használatakor használnak.

$<

A szkriptet futtató folyamat valódi UID-jét (felhasználói azonosítóját) tartalmazza.

$>

A parancsfájlt futtató folyamat tényleges UID-jét tartalmazza.

$(

A szkriptet futtató folyamat valódi GID-jét (csoportazonosítóját) tartalmazza.

$)

A parancsfájlt futtató folyamat érvényes GID-jét tartalmazza.

$^D$HIBAKERESÉS

A hibakeresési jelzők aktuális értékét tartalmazza.

$^C

A jelző aktuális értékét tartja a –c parancssori kapcsoló használatakor.

$^F

A maximális rendszerfájl-leíró alapértelmezés szerint 2

$^I$INPLACE_EDIT

Az –i parancssori kapcsoló értékét tartalmazza.

$^M

Speciális memóriakészlet használható, ha a Perl-szkript kimerült memóriahiba miatt elhal.

$^O$OSNAME

Operarendszerinformációkat tárolnak. 'Linux' Linux rendszerekhez, 'mswin32' ehhez Windows rendszerek.

$^T$BASETIME

A szkriptek futási ideje másodpercben.

$^W$FIGYELEM

A –w parancssori kapcsoló aktuális értéke. Figyelmeztető kapcsoló.

$ARGV

Az aktuális fájl neve, ha <> van használva.

Speciális változók tömbje:

Változó Leírás

@INC

Az elérési utak listáját tartalmazza, ahol a Perl könyvtári modulokba vagy szkriptekbe bele lehet nézni az aktuális szkript végrehajtása közben. Ezt az @INC-t használja a use, és utasításokra van szükség a könyvtári modulok elérési útjainak vizsgálatához.

@ARGV

Tárolja az átadott parancssori argumentumokat.

@_

Alprogramokban használatos, miközben a paramétereket átadja a szubrutinoknak.

@F

Ez az a tömb, amelybe a bemeneti sorok tárolásra kerülnek, amikor az automatikus felosztás –a (parancssori kapcsoló használatos).

Különleges hash-változók:

Változó Leírás

%INC

A fájlnév lesz a kulcs; értékek lesznek a fájlok elérési útja. Használja a do, use and demand.

%ENV

Rendszer környezeti változók.

%SIG

Signals kezelője.

Perl reguláris kifejezés

Mi az a reguláris kifejezés?

A Perl reguláris kifejezése elég erős az utasításokon vagy utasításcsoportokon belüli karakterlánc-mintázatok egyeztetésében. A reguláris kifejezéseket többnyire szövegelemzéshez, mintaillesztéshez és még sok máshoz használják a követelmények alapján. Vannak bizonyos operátoraink, amelyeket kifejezetten a reguláris kifejezésminta kötése használ: =~ és !~. Ezek teszt- és hozzárendelési operátorok.

Reguláris kifejezés Operatorzok

Reguláris kifejezés Operatorok Perlben

Reguláris kifejezés Operatorok Perlben

  • Perl meccs – m//
  • Perl helyettesítő – s///
  • Perl Transliterate – tr///

Mielőtt továbbmennénk, néhány dolgot tudnunk kell a reguláris kifejezésről; Vannak bizonyos dolgok, mint a Meta karakterek, helyettesítő karakterek a Perl Regex szintaxisában.

Faszén Jelentés

\

Különleges vagy árajánlat

*

Párosítson 0 vagy több karaktert

+

Párosítson 1 vagy több karaktert

?

0 vagy 1 karakter párosítása

|

Használható alternatív minták összeillesztésére

()

Az illesztett minta tárolására szolgál

[]

A karakterkészlet átadható. Kifejezetten számokhoz és ábécékhez használatos.

{}

Arra szolgál, hogy megadja, hányszor lehet a mérkőzést végrehajtani.

^

A karakterlánc kezdete

$

A karakterlánc vége

\w

Egyetlen karakter vagy szó egyeztetésére szolgál, amely lehet alfanumerikus, beleértve a „_”-t is.

\W

Az alfanumerikuson kívül bármi mással egyeztethető

\s

A szóközök egyeztetésére szolgál

\S

A szóközön kívül bármi mással párosítson

\d

Match számok. Nem decimális értékek és negatív értékek

\D

Párosítson bármit a számokon kívül.

\t

A tabulátorok egyezése

\n

Újsor egyezése

A fentiek a mintaillesztés során használható karakterkészletek.

Lássunk néhány példát.

Tekintsünk egy olyan helyzetet, amikor a felhasználó a szkript végrehajtása során valamilyen bevitelt ad meg, és szeretnénk ellenőrizni, hogy a felhasználó megadott-e valamilyen nevet bevitelként vagy sem. Írnunk kell egy reguláris kifejezés szintaxist, hogy kivonjuk a nevét, és kinyomtassuk azt.

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

output:

Talált minta

Itt a reguláris kifejezést úgy írtuk, hogy a /.*(Guru99).*/.* megfelel egy karakterlánc összes karakterének. A '.' perlben a regex egyezés bármilyen karakterre utal, beleértve a szóközt is.

Nézzük meg, hogyan lehet pontosan megszerkeszteni egy Regex-et.

Vegyünk egy példát több szóból, számjegyből és speciális szimbólumokból álló karakterláncra, mint például: „Üdvözlöm mindenkinek, ez az én számom: +91-99298373639”;

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

Szóköz szóköz szóköz szóköz szóköz szóköz szóköz speciális karakter : szóköz speciális karakter+számjegyek speciális karakter –számjegyek.

Perl meccs Operatorzok

Az egyeztetési operátorok egy karakterlánc egyeztetésére szolgálnak valamilyen utasításon belül vagy egy változóban.

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

output:

igaz

Ez a kis kód „true”-t fog kiírni, mivel a perl mintaillesztés azonosítja a karakterláncot egy változóban. Alapvetően a Perl a //-ben megadott szöveget keresi az egész karakterláncban, még akkor is, ha egy helyen találja, akkor „true”-t ad vissza. A minta bárhol lehet a változóban. Megpróbálhatjuk az =~-t !~-re cserélni, hogy meglássuk a különbséget a két operátor között.

Perl helyettesítés Operator

Ez az operátor használható bármely karakter keresésére és helyettesítésére akár null, akár más karakterrel.

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

output:

cselló hogy vagy

Megjegyzés: Valójában bármilyen mintaillesztő karakterláncot használhatunk, ahogy korábban tettük ebben a helyettesítő operátorban is. Itt 'gi'-t használtunk, g-globally, i-ignore kis- és nagybetűket.

Perl fordítás Operator

Ez hasonló a helyettesítéshez, de nem használ perl reguláris kifejezéseket, hanem közvetlenül átadhatjuk azt az értéket vagy szót, amelyet le akarunk cserélni.

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

output:

Hello tehén te vagy

Perl fájl I/O

A Perl-t a fájlok és az I/O műveletek hatékony kezelésére tervezték. A Perl fő előnye a fájlok elemzése és kezelése. A Perlben számos beépített függvény és operátor használható a fájlkezelés során.

Alapvetően a Perl-lel végrehajtott fájlműveletek a FILEHANDLE segítségével történnek. Ezt a FILEHANDLE-t meg kell határoznunk egy fájl megnyitásakor akár olvasáshoz, akár íráshoz.

Ebben a Perl-szkript oktatóanyagban megtudhatja,

Perl Nyissa meg a fájlt

A fájlt a Perlben elérhető open() függvény segítségével nyithatjuk meg.

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

Most megnyitottunk egy fájlt, most egy kérdés merül fel. Olvasásra vagy írásra való?

Perl Fájl olvasása és Perl Fájl írása

A Perl rendelkezik bizonyos módokkal, amelyeket használni kell egy fájl olvasásához, írásához vagy hozzáfűzéséhez.

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éhány példa egy fájl olvasására:

Fájl olvasása Perlben

Tegyük fel, hogy van egy perl fájlunk file.txt névvel, és néhány sornyi szöveg van benne. Meg kell nyitnunk ezt a fájlt, és ki kell nyomtatnunk.

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;

Ez kinyomtatja a fájl tartalmát a kimeneti képernyőn.

Most írunk egy programot, amely adatokat hoz létre és ír egy perl fájlba.

Fájl írása Perlben

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

Ez megírja a futási idő alatt megadott bemenetet, és létrehoz egy test.txt fájlt, amelynek bemenete lesz.

A fenti módszer mindig megpróbál létrehozni egy teszt.txt nevű fájlt, és beírja a bemenetet a fájlba; ugyanezt írjuk a fájl hozzáfűzéséhez.

File Append művelet Perlben

open(FH,">>test.txt");
my $var=<>;
print FH $var;
close FH;
Módok Leírás

<

Olvass

+<

Olvas és ír

>

Létrehoz, ír és csonkol

+>

Olvasni, írni, létrehozni és csonkolni

>>

Ír, hozzáfűz és létrehoz

+>>

Olvasni, írni, hozzáfűzni és létrehozni

Most, hogy meg kell látnunk, hogyan lehet fájlokat olvasni, írni és hozzáfűzni az alapvető példák segítségével.

Néhány további példát és egyéb funkciót fogunk látni, amelyek segítenek jobban megérteni a fájlokat.

Perl Tell

Ez a metódus a FILEHANDLER aktuális pozícióját adja vissza bájtokban, ha különben meg van adva, az utolsó sort tekinti pozíciónak.

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

Perl Seek

A Seek funkció hasonló az fseek rendszerhíváshoz. Ez a módszer arra szolgál, hogy a fájlmutatót egy adott helyre pozícionálja a bájtok megadásával, amelyet a fájlmutató kezdete vagy a fájlmutató vége követ.

seek FH, bytes, WHENCE;

WHENCE a fájlmutató indulási helye. A nulla a fájl elejétől fogja beállítani.

Példa: Hagyja, hogy az input.txt tartalmazzon néhány adatot, például: „Helló, ez az én világom”.

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

output:

ez az én világom

Perl Unlink

A kapcsolat megszüntetése a fájl törlésére szolgál.

unlink("filename or complete file path");

Könyvtárak kezelése:

Kezelhetünk olyan könyvtárakat is, amelyeken keresztül több fájlt is kezelhetünk.

lássuk, hogyan kell megnyitni egy könyvtárat. Használhatjuk az opendir és a readdir metódusokat.

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

Ezzel kinyomtatja az adott könyvtárban található összes fájlt.

Perl fájltesztek és jelentésük

-r

Annak ellenőrzése, hogy a fájl/könyvtár olvasható-e az aktuális felhasználó/csoport számára

-w

Annak ellenőrzése, hogy a fájl/könyvtár írható-e az aktuális felhasználó/csoport számára

-x

Annak ellenőrzése, hogy a fájl/könyvtár végrehajtható-e az aktuális felhasználó/csoport számára

-o

Annak ellenőrzése, hogy a fájl/könyvtár az aktuális felhasználó tulajdona-e

-R

Annak ellenőrzésére, hogy a fájl/könyvtár olvasható-e a valódi felhasználó/csoport számára

-W

Annak ellenőrzése, hogy a fájl/könyvtár írható-e ez a valódi felhasználó/csoport

-X

Annak ellenőrzése, hogy a fájl/könyvtár végrehajtható-e ez a valódi felhasználó/csoport

-O

Annak ellenőrzésére, hogy a fájl/könyvtár ennek a valódi felhasználónak a tulajdona

-e

Annak ellenőrzésére, hogy létezik-e fájl/könyvtárnév

-z

Annak ellenőrzése, hogy a fájl létezik-e, és mérete nulla (könyvtárak esetén mindig hamis)

-f

Annak ellenőrzésére, hogy az Entry sima fájl-e

-d

Annak ellenőrzésére, hogy az Entry egy könyvtár

-l

Annak ellenőrzésére, hogy az Entry szimbolikus hivatkozás-e

-S

Annak ellenőrzésére, hogy az Entry aljzat-e

-p

Annak ellenőrzése, hogy az Entry egy elnevezett cső ("FIFO")

-b

Annak ellenőrzése, hogy az Entry egy speciális blokkfájl-e (például egy csatlakoztatható lemez)

-c

Annak ellenőrzése, hogy az Entry karakteres speciális fájl-e (például egy I/O eszköz)

-u

Annak ellenőrzése, hogy a fájl vagy a könyvtár be van-e állítva

-g

Annak ellenőrzésére, hogy a fájl vagy a könyvtár be van-e állítva

-k

Annak ellenőrzése, hogy a fájlban vagy könyvtárban van-e beállítva a tapadó bit

-t

Az adott fájlkezelő egy TTY (az isatty() rendszerfüggvény szerint a fájlnevek nem tesztelhetők ezzel a teszttel)

-T

Annak ellenőrzésére, hogy a fájl „szöveges” fájlnak tűnik-e

-B

Annak ellenőrzésére, hogy a fájl „bináris” fájlnak tűnik-e

-M

A fájl módosítási korának (napokban mérve) ellenőrzéséhez

-A

A fájl hozzáférési korának ellenőrzése (napokban mérve).

-C

A fájl Inode-módosítási korának (napokban mérve) ellenőrzéséhez

Perl szubrutin

Mi az a szubrutin?

Alprogramok hasonlóak más programozási nyelvek függvényeihez. Használtunk már néhány beépített függvényt, mint a print, chomp, chop stb. Írhatunk saját szubrutinjainkat Perlben. Ezek a szubrutinok a programban bárhol megírhatók; célszerű az alprogramokat a kód elejére vagy a végére helyezni.

Alprogram PERL-ben

Alprogramok Példa

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

Most, hogy tudjuk, hogyan kell szubrutint írni, hogyan érhetjük el?

El kell érnünk vagy meghívnunk egy szubrutint az '&' jellel előtagolt szubrutinnév használatával.

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

Perl paraméterek és Perl argumentumok átadása

Az alprogramok vagy a perl függvények az újrafelhasználható kód elhelyezésére vannak írva. Az újrafelhasználható kódok többségéhez paramétereket kell átadni az alprogramnak. Itt megtudjuk, hogyan adhatunk át argumentumokat a szubrutinnak.

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.

output:

3 az átadott érték

A @_ egy speciális tömbváltozó, amely az alprogramoknak átadott argumentumokat tárolja.

Perl Shift

Használhatjuk a 'shift' kulcsszót is, amely egy paramétert vált át egy változóra, vagy $_[0],$_[1]… ami a @_ tömb egyedi eleme

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

output:

helló átment

Az alprogramokat általában objektum-orientált programozásban használják, és olyan helyeken is, ahol több újrafelhasználható kódot kell elhelyezni.

A szubrutinok fő funkciója egy feladat elvégzése és az újrafelhasználható kód eredményének visszaadása.

PERL oktatóanyag kezdőknek – teljes útmutató

A return kulcsszó használatával visszaadhatunk egy értéket a szubrutinból.

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

output:

11

A $eredmény megtartja a hozzáadott $a és $b értékét.

A hash-eket és a tömböt közvetlenül is átadhatjuk az alprogramnak.

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

output:

1a2b

Visszaadhatunk hash-t vagy tömböt is.

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;

output:

A 2b1a alrutinon belül A 2b1a alrutin hívása után

Perl formátum

A Perl rendelkezik egy mechanizmussal, amellyel jelentéseket készíthetünk. Ezzel a funkcióval pontosan úgy készíthetünk jelentéseket, ahogyan szeretnénk, miközben nyomtatunk az Output képernyőn vagy egy fájlban. Egy egyszerű formátum írható a Perlben elérhető printf vagy sprintf függvényekkel.

printf "%05d\n", 30;

Ez magában foglalja a bevezető nullákat a 30-as szám előtt, így a számjegyek teljes számát 5-re állítják. Ugyanez használható a sprintf-hez is.

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

A printf és sprintf használatával a legtöbb Perl formátumot megkaphatjuk. A jelentések esetében nehéz lesz végrehajtani.

Perl formátum

Példa jelentésre:

================================================== =========================
Név Cím Kor Telefon
================================================== =========================
Krishna Chennai 24 929309242
Shruthi Chennai 24 929309232

A fenti példa jelentések, amelyeket ugyanúgy kell kinyomtatnunk a Perlben. Ez a perl printf és perl sprintf használatával érhető el. Formátum használatával hatékonyan megvalósítható.

A formátum az alábbi módon deklarálható.

format FORMATNAME=FORMATLIST.

Itt egy bizonyos írási módszert fogunk használni, hogy kinyomtassuk az adatokat a kimeneti képernyőre vagy a fájlba.

Szimbólum Leírás

@

A mezőtartó kezdetének jelölésére szolgál

>

A szöveg jobbra igazítása

<

A szöveg balra igazítása

|

Középre igazítás

#

Numerikus, ha több # van megadva. Megjegyzésnek feltételezi, ha egyetlen # van megadva

.

Tizedesvessző

^

A mezőtartó eleje használható többsoros és sortördelés esetén is

~

A sornak üresnek kell lennie, ha a változó üres

@*

Több sor.

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

A kimenet megtekintéséhez futtassa a kódot.

A @ szimbólumot használjuk a mezőtartó vagy karakterlánc kezdetének megadására, minden karakter '<'.

STDOUT-ot használunk a szabványos kimenetre történő nyomtatáshoz. Ezt megváltoztathatjuk fájlkezelőre, amellyel adatokat írunk a fájlba.

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

Cserélhetjük a '<'-t '>'-re vagy '|' a szöveg igazításának megváltoztatásához.Az STDOUT_TOP a formátum fejlécének megtervezésére szolgál. Ugyanezt használhatjuk a fájlkezelőnél is az FH_TOP használatával (FH a fájlkezelő). Ez a formátumot adja ki annak a fájlnak, amelyen dolgozunk. tovább.

Perl kódolási szabványok

Minden programozónak megvan a saját érzéke arra, hogy bizonyos szabványok segítségével írja meg a kódot; ezeknek a szabványoknak elég ismerősnek kell lenniük ahhoz, hogy más programozók megértsék és megfelelően támogassák a kódot.

Kódolási szabványok a Perlben

Kódolási szabványok a Perlben

A kód írása egyszerű és könnyű. A probléma akkor jelentkezik, ha a későbbi szakaszokban karban kell tartani. A kód írásakor be kell tartani a megfelelő irányelveket és kódolási szabványokat. A Perl bizonyos szabványokat is meghatároz, amelyek hasznosak lesznek a programozók számára a kódírás során. A kód írása közben célszerű a 'strict' és a 'warnings modul' betöltése. Mindegyik modulnak megvan a maga jelentősége. A Strict arra készteti, hogy deklaráljuk a változót használat előtt, és azt is megmondja, hogy van-e csupasz szó a kódban. A Warnings modul alternatív megoldásként használható a '-w' kapcsoló átadásával a Perl értelmezőnek a shebangban. A figyelmeztetések megjelennek a kimeneti képernyőn.

#!/usr/bin/perl –w

Az alábbiakban néhány szabványlista található.

  • Használja a "szigorú" és a "figyelmeztetések" modult.
  • Távolítsa el a nem használt változót.
  • A változóneveknek érthetőnek kell lenniük a többi felhasználó számára. Pl.: $name, @fileData stb.
  • A szkript kódolásához dokumentációra van szükség.
  • Ne írjon le semmilyen értéket, inkább próbálja meg dinamikusan lekérni azokat, vagy kérje meg a felhasználót, hogy adja meg a futás közben. (Fájl elérési útja, Fájlnevek).
  • Maximalizálja a kód újrafelhasználását. Próbáld meg az újrafelhasználható kódot szubrutinokba tenni.
  • Jelentésük teljes neveket kell megadni az alprogramokhoz.
  • Az alprogramokat megfelelő megjegyzésekkel és dokumentációval kell megírni.
  • Mindig inicializálja a változókat.
  • Mindig ellenőrizze a visszatérési kódokat a rendszerhívásokhoz. Egy fájl megnyitása megtörténhet, de előfordulhat, hogy nem, ha itt van visszatérési kód, akkor a hibaállapot jelenik meg, ha a fájl nem létezik.

    Pl.: nyitott(FH,

  • A szubrutinnak mindig értéket kell visszaadnia.
  • Nyitott göndör ugyanabban a sorban.
  • Az egysoros BLOCK egyetlen vonalba helyezhető göndörrel.
  • Használjon címkéket a LOOPS alatt, könnyen kiléphet a hurokból, amikor csak szükséges.
  • Használja az aláhúzást, ha a szavak hosszú kifejezéseit változónévként vagy szubrutinként írja le.
  • Próbáljon egyszerű regex-et használni kódolás közben.

Tökéletes példa kódolási szabványokkal:

#######################################################################
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 hibakezelés

Mi a kivétel?

Kivétel a program végrehajtása során bekövetkező esemény, amely felfüggeszti vagy leállítja a programot.

Hibakezelés

A programozás során minden programozónak gondoskodnia kell a hibakezelésről. A Perl hibakezelési technikákat is biztosít, amelyekkel a hibát csapdába ejthetjük és ennek megfelelően kezelhetjük.

Hibakezelés a Perlben

Hibakezelés a Perlben

Számos módja van a program hibáinak ellenőrzésére. Meg kell vizsgálnunk a kódot használó függvény visszatérési kódjait. Ha ezeket a visszatérési kódokat megfelelően tudjuk kezelni, akkor a legtöbb hibakezelés elérhető.

Mi ad vissza rendszerhívások esetén?

Rendszerhívások esetén a visszatérési állapot két speciális változóban lesz tárolva: $? És $!

$! – Ez elkapja a hibaüzenethez tartozó hibaszámot vagy hibaszámot.

$? – Ez megtartja a return status system() függvényt.

Perl operátor vagy Logical használata

A rendszerhívások során a hibakezeléshez logikai vagy operátort használhatunk.

ex:

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

Ez olvasási módban nyitja meg a fájlt, ha a fájl létezik.

Mi van, ha a fájl hiányzik?

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

Az Eval funkció képes kezelni a végzetes hibákat, a fordítási időbeli hibákat, a futásidejű hibákat és azokat a hibákat, amelyek egy bizonyos időpontban leállítják a kódot.

A Perl Eval függvénynek lehet kódblokkja vagy kifejezése. Evals mindent, ami benne van, húrnak tekint.

Vegyünk egy olyan helyzetet, amikor olyan szubrutint hívunk meg, amely nincs definiálva a szkriptben. Ebben a helyzetben a szkript a következővel fejeződik be: „definiálatlan &XYZ szubrutin, ez a hiba az eval függvényben kezelhető.

Az evals blokknak számos felhasználási módja van; Az egyik ilyen felhasználási mód az, amikor az operációs rendszerre jellemző modult futás közben szeretnénk betölteni.

Pl.: A nullával való osztás végzetes hibát okoz; ennek kezelésére elhelyezhetjük a kódot az evals blokkban.

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

output:

szintaktikai hiba a C:\Users\XYZ\Text.pl 8. sorában, a " közelében)

{“

A C:\Users\XYZ\Text.pl végrehajtása fordítási hibák miatt megszakadt.

Példa: eval perl die utasítással.

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

output:

Elkapták: Meghalt a teszt alatt

A Perl Try használata

A Perl nem támogatja a try, catch és végül a kód blokkokat, mint más programozási nyelvek. Egy külső Perl modul betöltésével továbbra is használhatjuk őket.

használat Try::Tiny;

Ennek segítségével elhelyezhetjük a kódot a try blokkban, és elkaphatjuk a hibát a warn blokkban.

Az eval-ban használt $@ helyett a Try::Tiny a $_-t használja.

# hibakezelés fogáskezelővel

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

Használata végre.

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

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

output:

foo a C:\Users\XYZ\Text.pl 4. sorban.

Használhatjuk a try, catch és végül ilyen módon.

próbálkozzon { # utasítás }

catch {# utasítás }

végül { # utasítás };

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
};

output:

Or

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

output:

Perl Socket programozás

Mi az a konnektor?

PERL oktatóanyag kezdőknek – teljes útmutató

A socket olyan adathordozó, amelyen keresztül két számítógép kommunikálhat a hálózaton hálózati cím és portok használatával.

Tegyük fel, hogy A (szerver) és B (kliens) két rendszer, amelyeknek egyes programok futtatásához Socketekkel kell kölcsönhatásba lépniük egymással.

Ennek megvalósításához socketeket kell létrehoznunk mind A-ban (szerver), mind B-ben (kliens), A fogadó, B pedig küldő állapotban lesz.

A (szerver):

Itt a szerver szeretne kapcsolatot fogadni B-től (kliens), és végrehajtani néhány feladatot, majd az eredményt visszaküldeni B-nek (kliens). Amikor végrehajtjuk a kódot, az A-beli operációs rendszer megpróbál egy socketet létrehozni, és egy portot köt ahhoz a sockethez. Ezután a feladótól fog hallgatni, amely B.

B (Ügyfél).

Itt a kliens valamilyen programot szeretne küldeni a rendszeréből az A-ra (szerverre) feldolgozás céljából. Amikor végrehajtjuk a kódot, a B-beli operációs rendszer megpróbál létrehozni egy socketet az A-val (szerverrel) való kommunikációhoz, B-nek meg kell adnia az IP-címet és A port számát, amelyhez B csatlakozni kíván.

Ha ez jól megy, mindkét rendszer együttműködik az információcsere érdekében egy porton keresztül. A Perl támogatja a socket programozást is.

A Perl rendelkezik egy natív API-val, amelyen keresztül socketeket lehet megvalósítani. Az egyszerűség kedvéért számos CPAN modul létezik, amelyek segítségével socket programokat írunk.

Szerver működése:

  • Socket létrehozása
  • Bind socket címmel és porttal
  • Hallgassa meg az adott portcímen lévő aljzatot
  • Fogadja el azokat az ügyfélkapcsolatokat, amelyek a kiszolgáló portja és IP-címe használatával próbálnak csatlakozni
  • Végezzen műveleteket

Vásárló Operafeltételek:

  • Socket létrehozása
  • Csatlakozzon a szerverhez a portcímének használatával
  • Végezzen műveleteket

Ügyfél-szerver Operaa Perlben

socket.io

Ez egy modul a socket programozáshoz, amely objektum orientált programozáson alapul. Ez a modul nem támogatja a hálózatokban használt INET hálózattípust.

IO::Socket::INET:

Ez a modul támogatja az INET tartományt, és az IO::Sockets-re épül. Az IO::Socketsben elérhető összes metódus az INET modulban öröklődik.

TCP protokollt használó kliens és szerver:

A TCP egy kapcsolatorientált protokoll; ezt a protokollt fogjuk használni a socket programozáshoz.

Mielőtt továbblépnénk, nézzük meg, hogyan hozhatunk létre objektumot az IO::Socket::INET modulhoz, és hogyan hozhatunk létre egy socketet.

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

Az IO::Socket::INET modul új metódusa egy hash-t fogad el bemeneti paraméterként az alprogramhoz. Ez a hash előre meghatározott, és csak meg kell adnunk az értékeket a használni kívánt kulcsokhoz. Van egy lista a hash által használt kulcsokról.

PeerAddr

Távoli gazdagép címe

PeerHost

A PeerAddr szinonimája

PeerPort

Távoli port vagy szolgáltatás

LocalAddr

Helyi gazdagép kötési címe

Localhost

A LocalAddr szinonimája

LocalPort

Helyi gazdagép kötési port

Proto

Protokoll neve (vagy száma)

típus

foglalat típusa

Hallgass

Sor mérete a hallgatáshoz

ReuseAddr

A kötés előtt állítsa be a SO_REUSEADDR értéket

újrafelhasználás

A kötés előtt állítsa be a SO_REUSEADDR értéket

ReusePort

Állítsa be a SO_REUSEPORT beállítást a kötés előtt

Adás

Állítsa be a SO_BROADCAST beállítást a kötés előtt

Timeout

Időtúllépés értéke különböző műveletekhez

MultiHomed

Próbálja ki az összes címet a többlakásos gazdagépekhez

Blokkolása

Határozza meg, hogy a kapcsolat blokkoló mód lesz-e

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

Ügyfél.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);

Jegyzet:

A socket programozásban először a Server.pl fájlt kell végrehajtanunk, majd a client.pl fájlt külön-külön különböző parancssorokban, ha helyi gazdagépen futunk.

Mi az a Perl modulok és csomagok

A modulok és a csomagok szorosan kapcsolódnak egymáshoz és függetlenek. Csomag: A Perl-csomag névtérként is ismert, és minden egyedi változót tartalmaz, például hash-eket, tömböket, skalárokat és szubrutinokat. Modul: A Modul újrafelhasználható kódok gyűjteménye, ahová szubrutinokat írunk. Ezek a modulok Perl programokba tölthetők be, hogy kihasználják a modulokban írt szubrutinokat.

Mik azok a Perl modulok?

A szabványos modulok a Perl bármely rendszerre történő telepítése során kerülnek telepítésre. CPAN: Átfogó Perl Archive Network – A Perl modulok globális tárháza. Saját testreszabott Perl moduljaink, amelyeket mi írhatunk. Alapvetően egy modul bármilyen szkriptbe betöltve exportálja az összes globális változóját és szubrutinját. Ezek a szubrutinok közvetlenül hívhatnak, mintha magában a szkriptben deklarálták volna. A Perl modulok .pm kiterjesztéssel írhatók a fájlnévre, pl.: Foo.pm. Egy modul a program elején található 'package Foo' használatával írható.

Alap Perl modul:

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

Nincs kimenet

Ennek a Perl-modulnak a használatához el kell helyeznünk a jelenleg működő könyvtárba.

Egy Perl-modult betölthetünk a request használatával vagy a kódban bárhol. A fő különbség a követelmény és a használat között az, hogy futás közben be kell tölteni a modult, és fordítási idő alatt kell használni a betöltéseket.

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

A fenti példában itt a teljes képzésű modulnév használatával érjük el az alprogramokat.

A csomagot az „Aritmetika használata” segítségével is elérhetjük.

Exportőr:

Ez a modul alapértelmezett importálási funkcióval rendelkezik.

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

Az @EXPORT tömb használható változók és szubrutinok listájának átadására, amelyek alapértelmezés szerint a modul hívójának exportálva lesznek.

Az @EXPORT_OK tömb használható változók és szubrutinok listájának átadására, amelyeket igény szerint exportálunk, ahol a felhasználónak meg kell adnia a modul betöltésekor.

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

Alapértelmezés szerint a szubrutin hozzáadása exportálásra kerül. A kivonási metódust nem exportálja a rendszer, ha nincs megadva a modul betöltésekor.

Objektum orientált programozás Perlben

Ebben a részben megtudjuk, hogyan lehet Perl objektumorientált modulokat létrehozni. Először is nézzük meg, mi az objektum? Az objektum egy olyan példány, amellyel bármely Perl modulban hozzáférhetünk, módosíthatunk és megkereshetünk bizonyos adatokat. Ez nem más, mint a meglévő Perl-csomag, a változók és szubrutinok osztályként, objektumokként és metódusként való működése más programozási nyelvekhez képest.

Osztály létrehozása

Az előző témakörből már tudjuk, hogyan kell modulokat létrehozni. Az osztály célja metódusok és változók tárolása. A Perl modul szubrutinokkal rendelkezik, amelyek metódusok. El kell érnünk ezeket a változókat és szubrutinobjektumokat.

Perl konstruktor

A konstruktor a Perlben egy olyan metódus, amely végrehajtja és visszaadja nekünk a hivatkozást a modulnévvel a hivatkozáshoz címkézve. Ezt az osztály áldásának nevezik. Egy adott változót használunk a perl osztály megáldására, ami a 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;

Az új metódus, amelyet egy osztály konstruktoraként használnak, Ez a konstruktor létrehoz egy objektumot számunkra, és visszatér a szkripthez, amely ezt a konstruktort hívja.

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

Itt meg kell értenünk, hogyan jött létre az objektum. Amikor megpróbálunk objektumot létrehozni az osztály számára, az osztály teljes nevét kell használnunk. Tegyük fel, ha a perl osztály valamilyen lib\Math\Arithmetic.pm fájlban található. Ha pedig ehhez a perl osztályhoz szeretnénk hozzáférni a lib könyvtárból, akkor meg kell adnunk az osztály teljes elérési útját a szkript hívása közben.

használja a lib::Math::Aritmetic;

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

Így történik az objektum létrehozása a Perlben.

@INC:

Honnan tudja a Perl szkript, hogy hol található a könyvtár modul? A Perl csak a szkript aktuális könyvtáráról és a Perl beépített könyvtári elérési útjáról tud. Amikor olyan Perl modult használunk, amely nem az aktuális könyvtárban vagy a Perl könyvtár elérési útjában található, a szkript mindig meghiúsul. Az @INC-ről ez egy tömb, amely tartalmazza az összes könyvtár elérési útját, ahol meg kell keresnie a Perl modulokat. Próbálja meg végrehajtani ezt a parancsot, és nézze meg, mi lesz a kimenet.

perl –e "print @INC"

Ez ad némi kimenetet, és ez az az útvonal, ahol a lib modulok elérhetők lesznek. Amikor bármilyen új könyvtári modult használunk, meg kell mondanunk a Perl-nek, a tolmácsnak, hogy nézze meg azt a helyet, ahol a Perl modul elérhető.

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

Legyen ez az első kódsor. Ez azt fogja mondani a tolmácsnak, hogy nézzen rá arra az ösvényre. vagy használ

lib Arithmetic; # List here is your Perl Module location

Perl Destructor

Az objektum destruktora alapértelmezés szerint a szkript végén és a kilépés előtt kerül meghívásra. Ez arra szolgál, hogy megsemmisítse a tárgyakat a memóriából.


PERL V/s Shell Scripting

Bevezetés a PERL programozásba

  • A Perl programozása nem okoz hordozhatósági problémákat, ami gyakori, ha különböző shell-eket használ a shell-szkriptekben.
  • Perlben nagyon egyszerű a hibakezelés
  • A Perl-en a hatalmas kiterjedtsége miatt könnyen lehet hosszú és összetett programokat írni. Ezzel ellentétben a Shell nem támogatja a névtereket, modulokat, objektumokat, öröklődést stb.
  • A Shellnek kevesebb újrafelhasználható könyvtára van. Semmi a Perl CPAN-jához képest
  • A Shell kevésbé biztonságos. Külső függvényeket hív meg (az olyan parancsok, mint az mv, cp stb., a használt shelltől függenek). Ezzel szemben a Perl hasznos munkát végez a belső funkciók használata közben.

Hogyan használják a PERL-t az automatizálási tesztelésben

A Perlt széles körben használják az automatizálásban. Lehet, hogy nem ez a legjobb programozási nyelv a világon, de bizonyos típusú feladatokhoz a legalkalmasabb. Beszéljük meg, hol és miért használják a Perlt Automatizálási tesztelés.

Tárolási tesztelés

Tárolás tesztelése Perl használatával

Mi az a tárolás? A Fájlokban tárolt adatok.

Tegyük fel, hogy van egy tárhelyünk Teszt eset ahol adatokat kell írnunk egy partícióra, olvassuk el és ellenőrizzük, hogy az adatok helyesen vannak-e írva.

Ezt manuálisan is meg lehet tenni, de egy kézi tesztelő elvégezheti ugyanezt 10000 XNUMX alkalommal? rémálom lesz! Automatizálásra van szükségünk

A tárolással kapcsolatos dolgok automatizálására a legjobb eszköz a Perl a fájlkezelési technikák miatt, REGEX és hatékony fájlelemzés, amely más programozási nyelvekhez képest a legkevesebb végrehajtási időt vesz igénybe.

Miért kell tesztelnünk a tárolást? Gondoljon a nagy adatközpontokra, ahol az adatok folyamatosan áramlanak egyik rendszerről a másikra, és másodpercenként 1000 rekordot tárolnak. Az ilyen tárolási mechanizmusok robusztusságának tesztelése elengedhetetlen.

Sok cég, mint a HP, a Dell, IBM és sok szervergyártó a Perl-t használja interfészként a tárolási és hálózati tartományok működésének tesztelésére. A NetApp egy olyan cég, amely teljes mértékben a Storage-on dolgozik, és a Perl programozási nyelvet használja a tesztesetek automatizálására.

Ha érdekli a Perl Automation, akkor tanácsos tanulni a Storage & Networkingről Concepts.

Szerver és hálózati tesztelés:

Szerver és hálózat tesztelése Perl használatával

Szerver és hálózat tesztelése Perl használatával

A PERL-t széles körben használják a szerver üzemidejének és teljesítményének figyelésére.

Vegyünk egy olyan adatközpontot, amely 100 gazdagépet (szervereket) tartalmaz. Minden állomáshoz csatlakoznia kell, néhány parancsot távolról kell végrehajtania. Ezenkívül újra kell indítania a rendszert, és ellenőriznie kell, hogy mikor jön vissza az online állapotba.

A feladat manuális végrehajtása mind a 100 gazdagépnél rémálom lesz. De ezt könnyen automatizálhatjuk a PERL segítségével

Tervezze meg a lépéseket a fenti automatizálás eléréséhez PERL használatával

  1. Vegyen be a fájlból a gazdagép információit, például (IP, felhasználónév és jelszó).
  2. A Net::SSH2 használatával csatlakozhat minden rendszerhez, és hozzon létre egy csatornát a parancsok végrehajtásához.
  3. A szükséges parancsok végrehajtása, például: ls, dir, ifconfig, ps stb.
  4. Indítsa újra a rendszert.
  5. Várjon 10 percet, amíg a rendszer elindul.
  6. Pingelje meg a rendszert a Net::Ping modul segítségével, és nyomtassa ki az állapotot.

A fenti forgatókönyvet kódoljuk.

Vegyünk egy Input.txt nevű fájlt, amely a teljes információt tárolja az összes olyan gazdagépről, amelyhez csatlakozni kell, és végrehajtani a parancsot.

Input.txt

192.168.1.2 root jelszó

192.168.1.3 root jelszó

192.168.1.4 gyökér gyökér123

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

Webes tesztelés

A Perl nem csak a tárolási és hálózati tesztelésre korlátozódik. Web alapú tesztelést is végezhetünk PERL segítségével. WWW-Gépesítés az egyik modulhoz használják webes tesztelés. Alapvetően nem indít böngészőt a webalkalmazások működésének tesztelésére, hanem a html oldalak forráskódját használja.

Böngésző alapú tesztelést is végezhetünk a segítségével Selenium IDE, RC, web-illesztőprogram. A Perl támogatott Selenium.

\n”; #ez megtartja a maradék karakterláncot, miután a minta egyezés megtörtént.
nyomtasd "