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.
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
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
#!/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: |
---|---|
|
|
|
|
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
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…
Unix |
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 |
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 |
Windows |
Telepíteni kell Két opció áll rendelkezésre
|
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.
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.
Lépés 2: A telepítés folytatásához fogadja el a licencszerződést.
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.
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.
Lépés 5: Kattintson a Telepítés gombra a telepítés folytatásához.
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.
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.
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.
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 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
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.
- Minden skalárnév egy $-val kezdődik. Könnyű megjegyezni, hogy minden név előtagjaként $. Tekintsd úgy, mint egy $ skalárt.
- 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"
- 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
- Numbers
- 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
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
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 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
- my
- helyi
- 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!
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
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.
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.
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.
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.
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.
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.
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
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
- 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:
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.
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.
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.
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.
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.
================================================== =========================
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
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
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?
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
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
- 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
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
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
- Vegyen be a fájlból a gazdagép információit, például (IP, felhasználónév és jelszó).
- A Net::SSH2 használatával csatlakozhat minden rendszerhez, és hozzon létre egy csatornát a parancsok végrehajtásához.
- A szükséges parancsok végrehajtása, például: ls, dir, ifconfig, ps stb.
- Indítsa újra a rendszert.
- Várjon 10 percet, amíg a rendszer elindul.
- 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 "