Perl opetusohjelma
Mikรค on Perl?
Perl on korkean tason, yleiskรคyttรถinen, tulkittu, dynaaminen ohjelmointikieli. Perl on termi, joka tarkoittaa "kรคytรคnnรถllistรค purkamis- ja raportointikieltรค", vaikka Perlistรค ei ole lyhennettรค. Sen esitteli Larry Wall vuonna 1987. Perl-kieli oli erityisesti suunniteltu tekstinmuokkausta varten. Mutta nyt sitรค kรคytetรครคn laajalti erilaisiin tarkoituksiin, mukaan lukien Linux-jรคrjestelmรคn hallinta, verkko-ohjelmointi, web-kehitys jne.

Laitetaan se yksinkertaisella tavalla. Vaikka tietokoneet ymmรคrtรคvรคt vain nollia ja ykkรถsiรค (binรครคrikieli/konekieli/ [matala kieli]), meille ihmisille on erittรคin vaikea ohjelmoida binรครคrikielellรค. Perl on ohjelmointikieli, joka kรคyttรครค luonnollisen kielen elementtejรค, sanoja, joita kรคytetรครคn yleisessรค englannin kielessรค ja on siksi ihmisten helpompi ymmรคrtรครค [korkean tason kieli]. Nyt on ongelma; tietokoneet eivรคt ymmรคrrรค korkean tason kieliรค, joita me ihmiset ymmรคrrรคmme helposti. Sitรค varten tarvitsemme jotain, joka voi kรครคntรครค korkean tason kielen matalan tason kieleksi. Tรครคllรค tulkki tulee avuksemme. Tulkki on ohjelmisto, joka muuntaa korkean tason kielellรค kirjoitetun ohjelman matalan tason kieleksi, jotta tietokone ymmรคrtรครค ja suorittaa ohjelmaan kirjoitetut ohjeet. Siksi Perl on tulkittua ohjelmointikieltรค.
Missรค Perliรค kรคytetรครคn?
Perl-skriptikielen voimaa voidaan toteuttaa monilla aloilla. Perlin suosituin kรคyttรถ on Web-kehityksessรค. Perliรค kรคytetรครคn myรถs monien web-palvelimien tehtรคvien automatisointiin ja muihin hallintotehtรคviin, se voi automaattisesti luoda sรคhkรถposteja ja puhdistaa jรคrjestelmรคt. Perliรค kรคytetรครคn edelleen alkuperรคiseen tarkoitukseensa eli tietojen purkamiseen ja raporttien luomiseen. Se voi tuottaa raportteja resurssien kรคytรถstรค ja tarkistaa verkon tietoturvaongelmat. Tรคstรค syystรค Perlistรค on tullut suosittu kieli, jota kรคytetรครคn myรถs web-kehityksessรค, verkottamisessa ja bioinformatiikassa. Kaiken tรคmรคn lisรคksi perliรค voidaan kรคyttรครค myรถs CGI-ohjelmointiin.
Perliรค voidaan kรคyttรครค myรถs kuvien luomiseen ja kรคsittelyyn. Telnetin, FTP:n jne. verkottumisen lisรคksi graafisen kรคyttรถliittymรคn luominen, VLSI-elektroniikka ja sรคhkรถpostisuodattimien luominen roskapostituskรคytรคntรถjen vรคhentรคmiseksi ovat erรคitรค Perlin kรคyttรถtapauksia.
Perl tunnetaan myรถs OOP (olio-ohjelmointi) -kรคytรคntรถjen toteuttamisesta ja tukee kaikkia perinnรถn muotoja (yksinkertainen, moninkertainen ja vinoneliรถ), polymorfismia ja kapselointia. Perl on riittรคvรคn joustava tukemaan Procedural- ja OOP-kรคytรคntรถjรค samanaikaisesti. Perlissรค on myรถs ylimรครคrรคisiรค moduuleja, joiden avulla voit kirjoittaa tai kรคyttรครค / kรคyttรครค uudelleen sisรครคn kirjoitettua koodia Python, PHP, PDL, TCL, oktaavi, Java, C, C++, Basic, Ruby ja Lua Perl-skriptissรคsi. Tรคmรค tarkoittaa, ettรค voit yhdistรครค Perlin nรคihin ylimรครคrรคisiin ohjelmointikielet pikemminkin olemassa olevan koodin uudelleenkirjoittaminen.
Perl-ohjelmointikielen sovellukset
Miksi kรคyttรครค Perliรค?
On totta, ettรค on olemassa muita ohjelmointikieliรค, joilla voidaan tehdรค kaikki edellรค mainitut asiat, niin miksi sinun pitรคisi kรคyttรครค erityisesti Perlia? Perl on erittรคin helppo oppia, varsinkin jos sinulla on tietokoneohjelmoinnin tausta. Perl on suunniteltu helpottamaan ihmisten kirjoittamista ja ymmรคrtรคmistรค sen sijaan, ettรค se olisi helppo kรคsitellรค tietokoneilla. Se kรคyttรครค sรครคnnรถllisiรค lausekkeita. Sen luonnollinen kielen tyyli eroaa muista ohjelmointikielistรค, jotka kรคyttรคvรคt tiettyรค kielioppia ja syntakseja; siksi Perl on erittรคin joustava eikรค vaadi sinulle mitรครคn erityistรค tapaa ajatella ratkaisua tai ongelmaa. Perl on erittรคin kannettava. Se voi toimia missรค tahansa kรคyttรถjรคrjestelmรคssรค, johon on asennettu Perl-tulkki, joten se on alustariippumaton. Kaikki Linux Operating Systems tulee asennettuna Perlin kanssa, joten voit aloittaa Perl-koodauksen Linuxissa heti. Tรคmรค on toisin kuin Shell-skriptit, joissa koodi muuttuu kรคytetyn Linux-jakelun maun mukaan, mikรค tekee siitรค entistรค vรคhemmรคn kannettavan. Pienistรค erityistehtรคvistรค Perlissรค tulee erittรคin helppoa ja nopeaa. Tรคmรคn aloittelijoille tarkoitetun Perl-opetusohjelman aikana opit kuinka voit koodata pieniรค, nopeita ohjelmia tiettyjรค tehtรคviรค varten. Otetaan yksinkertainen esimerkki klassisesta Hello World -ohjelmasta, jota kรคytetรครคn minkรค tahansa ohjelmointikielen oppimisen aloittamiseen, jonka juuret ovat UNIX:
Esimerkki: Perl hello world

#!/usr/bin/perl print "Hello, world!";
lรคhtรถ:
Hei, maailma!
Yllรค olevat kaksi koodiriviรค tulostavat Hello, world! Eikรถ se nyt ollut liian yksinkertaista ja nopeaa? C-kielen tuntevat opiskelijat, C++ tietรครค, ettรค saman tulosteen saamiseksi nรคillรค kielillรค tarvitaan paljon enemmรคn koodirivejรค.
Saatat ihmetellรค miksi Perl on niin kuuluisa verkossa. Se on yksinkertaista, koska suurin osa verkossa tapahtuvista asioista on TEKSTIร ja Perl on erittรคin hyvรค tekstinkรคsittelyssรค. Jos vertaamme Perliรค johonkin kieleen, niin Perl on paras kieli, joka on hyvรค tiedostojen kรคsittelyssรค, tekstinkรคsittelyssรค ja tulosraportoinnissa.
Yksi Perlin parhaista eduista on, ettรค se on vapaasti kรคytettรคvรค
Perl-yhteisรถ uskoo vahvasti, ettรค ohjelmiston tulee olla vapaasti saatavilla, vapaasti muokattavissa ja vapaasti levitettรคvissรค. Useat Perl-yhteisรถn vapaaehtoiset pyrkivรคt tekemรครคn ohjelmointikielestรค mahdollisimman hyvรคn.
Perlin edut ja haitat
| Plussat: | Miinukset: |
|---|---|
|
|
|
|
|
Aloitetaan
Kun Perlin historiasta ja Perlin koodaamiseen tarvittavista tietokoneohjelmoinnin peruskรคsitteistรค on riittรคvรคsti tietoa, on aika hypรคtรค ja aloittaa Perlin kรคyttรถ. Seuraavassa luvussa opetetaan, kuinka voit asentaa Perlin jรคrjestelmรครคsi ja valmistautua koodausmatkaan Perlissรค. Tรคmรค Perl-komentosarjan opetusohjelma ottaa Linuxin kรคyttรถjรคrjestelmรคksi, jota opiskelijat kรคyttรคvรคt koodaamiseen Perlissรค.
Lataa ja asenna Perl - Windows, Mac ja Linux
Kuinka saada Perl?
Hyviรค uutisia sinulla varmaan on se!
Mutta jos et lรถydรค sitรค jo jรคrjestelmรคstรคsi, voit silti saada sen ilmaiseksi.
Jos haluat selvittรครค, onko sinulla jo asennettu Perl, mene komentoriville ja kirjoita: perl -v

Komento nรคyttรครค Perlin version, jos se on asennettu. Tรคssรค tapauksessa versio on v5.14.2. Mutta jos ei, รคlรค panikoiโฆ
unix
|
Jo asennettu Mukana esiasennettuna Perl, mutta saatat joutua pรคivittรคmรครคn uusimpaan versioon. |
Mac OS
|
Jo asennettu OSX:ssรค on esiasennettu Perl, vaikka saatat joutua pรคivittรคmรครคn sen uusimpaan versioon |
Windows
|
Tarve asentaa Kaksi Vaihtoehtoa on saatavilla
|
Perlin pรคivittรคminen Linuxissa:
Jos sinun on pรคivitettรคvรค Perl-versio, kirjoita vain yksi komentorivi
sudo apt-get install perl
ja rentoutua. Loput hoidetaan. Varmista vain, ettรค sinulla on aktiivinen Internet-yhteys.


Asenna perl for Windows:
Lataa ensin Active Perl tรคstรค linkkiรค. Noudata nรคitรค ohjeita asentaaksesi ActivePerlin Windows jรคrjestelmรค. Katso samat alla olevat kuvakaappaukset.
Vaihe 1: Kun olet ladannut asennusohjelman ja kรคynnistรคnyt asennuksen, nรคet alla olevan ikkunan, napsauta Seuraava jatkaaksesi.

Vaihe 2: Hyvรคksy kรคyttรถoikeussopimus jatkaaksesi asennusta.

Vaihe 3: Alla on eri paketteja, jotka asennetaan. Oletuksena kaikki valitaan. Ainoa eroava asia on PPM (Perl Package Manager). Tรคmรค on Active Perlin tarjoama apuohjelma ulkoisten Perl-moduulien tai kirjastojen asentamiseen jรคrjestelmรครคsi. Napsauta Seuraava jatkaaksesi.

Vaihe 4: Nรคmรค ovat erilaisia โโPerl-laajennuksia, joita voidaan kรคyttรครค Perlissรค. Useimmiten kรคytรคmme .Pl-, .Plx- ja .Pm-tiedostoja Perlille. Perl-moduulit kรคyttรคvรคt periaatteessa .Pm tiedostotunnisteena viitatakseen kirjastotiedostoon. Valitse kaikki vaihtoehdot ja napsauta Seuraava-painiketta.

Vaihe 5: Napsauta Asenna-painiketta jatkaaksesi asennusta.

Vaihe 6: Kun olet asentanut, suorita komento 'Perl โv' tarkistaaksesi, onko Perl asennettu onnistuneesti jรคrjestelmรครคsi.

On monia asioita, joista on keskusteltava Perl-ympรคristรถn asettamiseksi sekรค Linuxissa ettรค Windows, koska tรคhรคn asennukseen ei sisรคlly monia kirjastotiedostoja. Sinun on asennettava ne manuaalisesti. Voit asentaa ne manuaalisesti kรคyttรคmรคllรค CPAN:ia (Comprehensive Perl Archive Network) tai joko PPM, joka toimii vain perl-ikkunoissa. Mutta nรคmรค tiedostot eivรคt ole pakollisia koodauksen aloittamiseksi Perlissรค.
Tรคmรคn Windows-asennuksen lisรคksi voit kรคyttรครค Windows 10:n uusi ominaisuus Linux-alijรคrjestelmรคssรค Windowsissa ja kรคyttรครค sitรค perl-koodin suorittamiseen
Ensimmรคinen Perl-ohjelma
Hello world!
Perl Esimerkki: Hello World
#!/usr/bin/perl -w #this is just a commentโฆ print "Hello World";
รlรค huoli, jos et ymmรคrrรค tรคtรค tekstiรค. Kaikki selviรครค pian. Tule katsomaan sitรค rivillรค:
#!/usr/bin/perl
Tรคmรค kertoo OperaJรคrjestelmรค suorittaa tรคmรคn tiedoston ohjelmalla, joka sijaitsee osoitteessa /usr/bin/perl. Jotkut IDE:t eivรคt tarvitse tรคtรค riviรค. Jos se on vรคlttรคmรคtรถntรค, sinun on kirjoitettava tรคhรคn polku tulkkillesi. Muistaa! Tรคmรคn erikoisrivin on oltava ohjelman alussa ja sen on alettava numerosta #! kรคytรค varoituksia; Tรคmรค on toinen erikoiskomento, joka kรคskee tulkin nรคyttรคmรครคn kaikki varoitukset, esim. -w, joka aktivoi varoitukset maailmanlaajuisesti.
print "Hello World";
Tulostusohje kirjoittaa tekstiรค nรคytรถlle. Puolipiste rivin lopussa kertoo perl-tulkijalle, ettรค ohje on valmis. Sinun tulee laittaa puolipiste jokaisen Perl-koodin ohjeen loppuun. Huomaa lainausmerkki (โ). Se on tarpeen tulostusohjeiden kannalta. Tallenna yllรค oleva skripti nimellรค firstprog.pl
On Windows
Jos sinulla on Strawberry asennettuna, voit napsauttaa Suorita. Voit myรถs kรคyttรครค komentorivikรคyttรถliittymรครค ja kirjoittaa konsoliin:
C:\> perl path\firstprog.pl
tai jos perl.exe ei ole polullasi:
C:\> c:\perl\bin\perl.exe firstprog.pl
Linuxissa/Unixissa
Sinun tarvitsee vain avata terminaali ja kirjoittaa:
perl firstprog.pl
Jos et voi suorittaa ohjelmaa, varmista, ettรค sinulla on kelpoisuus suorittaa se. Kirjoita terminaaliin:
chmod +x firstprog.pl
Ohjelmasi on nyt suoritettava ja valmis suoritettavaksi. Suorittaaksesi kirjoittamalla:
./firstprog
Asenna cpan miinus -moduulit
Moduulit ovat joukko koodeja, joita kรคytetรครคn suorittamaan tehtรคviรค, jotka suorittavat yleisiรค toimintoja useissa ohjelmissa. Jos kรคytรคt perl-moduuleja, sinun ei tarvitse kirjoittaa koodeja uudelleen suorittaaksesi saman toiminnon. Perl voi kรคyttรครค tรคllaisia โโulkoisia koodikirjastoja. Yksi parhaista kirjastoista on CPAN. Se tulee sanoista Comprehensive Perl Archive Network ja sisรคltรครค suuren mรครคrรคn Perl-moduuleja kรคytettรคvรคksi. Se on yhteisรถ tai verkosto, jossa on useita tรคllaisia โโmoduuleja tarjoavia kehittรคjiรค. Asentamalla tuen CPAN-moduuleille perl-moduuliisi voit hyรถdyntรครค CPAN-moduuleja ja helpottaa tyรถtรคsi. Suurin osa Perl-moduuleista on kirjoitettu Perlillรค, jotkin kรคyttรคvรคt XS:รครค (ne kirjoitetaan C-kielellรค), joten vaativat C-kรครคntรคjรคn (tรคmรคn asennuksen saaminen on helppoa โ รคlรค panikoi. Moduulit voivat olla riippuvaisia โโmuista moduuleista (melkein aina CPAN:sta) ja ei voi asentaa ilman niitรค (tai ilman tiettyรค versiota). Alla olevien vaihtoehtojen dokumentaatio kannattaa lukea huolellisesti Hanki, pura, rakenna ja asenna moduuleja CPAN:sta helpottaaksesi muiden moduulien asentamista (kiitรคt meitรค myรถhemmin). App-cpanminus perl-moduulit, kirjoita komentoriville:
cpan App::cpanminus
cpan App::cpanminus Varmista, ettรค sinulla on Internet-yhteys, kun perl-moduuleja ladataan ja asennetaan.

Asenna nyt mikรค tahansa moduuli:
cpan โi <Module_Name>.
Katsotaanpa esimerkkiรค moduulin asentamisesta File::Data(Se on liitรคntรค, jolla pรครคset tiedostotietoihin).

Perl-muuttuja
Puhumme nyt muuttujista. Voit kuvitella muuttujan, kuten sรคiliรถn, joka sisรคltรครค yhden tai useamman arvon. Kun muuttujan nimi on mรครคritetty, se pysyy samana, mutta arvo tai arvot muuttuvat yhรค uudelleen ja uudelleen.
Muuttujia on 3 tyyppiรค:
Muuttujien tyypit Perlissรค
Helpoimmat ovat skalaarit, ja tรคmรค on meidรคn tรคmรคn pรคivรคn aiheemme
Skalaarimuuttuja
Tรคmรคn tyyppisellรค muuttujalla on yksi arvo.
Sen nimi alkaa dollarimerkillรค ja Perl-tunnisteella (se on muuttujamme nimi).
Skalaarimuuttuja Perlissรค
Nimeรคmiskokous
Jos olet perehtynyt muihin ohjelmointikieliin, tiedรคt, ettรค muuttujien nimeรคmisessรค on tiettyjรค sรครคntรถjรค. Samoin Perlillรค on kolme sรครคntรถรค skalaarien nimeรคmiseen.
- Kaikki skalaarinimet alkavat $:lla. Jokaisen nimen etuliitteenรค on helppo muistaa $. Ajattele sitรค $skalaarina.
- Kuten PHP. ensimmรคisen merkin $ jรคlkeen, joka on erityistรค Perlissรค, aakkosnumeeriset merkit eli a - z, A - Z ja 0 - 9 ovat sallittuja. Myรถs alaviiva on sallittu. Kรคytรค alaviivaa jakaaksesi muuttujien nimet kahdeksi sanaksi. "Mutta ensimmรคinen merkki ei voi olla numero"
- Vaikka numerot voivat olla osa nimeรค, ne eivรคt voi tulla heti $:n jรคlkeen. Tรคmรค tarkoittaa, ettรค ensimmรคinen merkki $:n jรคlkeen on joko aakkoset tai alaviiva. ne tulevat C/C++ taustan pitรคisi pystyรค vรคlittรถmรคsti tunnistamaan samankaltaisuus. Esimerkkejรค
Perl esimerkki:
$var; $Var32; $vaRRR43; $name_underscore_23;
Nรคmรค eivรคt kuitenkaan ole laillisia skalaarimuuttujien nimiรค.
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
Yleissรครคntรถ sanoo, ettรค kun Perlillรค on vain yksi jostain, se on skalaari. Skalaarit voidaan lukea laitteista, ja voimme kรคyttรครค niitรค ohjelmissamme.
Kaksi skalaaritietotyyppiรค
- Numbers
- Jouset
Numbers:
Tรคmรคn tyyppisissรค skalaaritiedoissa voisimme mรครคrittรครค:
- kokonaislukuja, se on yksinkertaisesti kokonaislukuja, kuten 2, 0, 534
- liukulukuluvut, ne ovat reaalilukuja, kuten 3.14, 6.74, 0.333

Huomautus: Yleensรค Perl-tulkki nรคkee kokonaisluvut kuten liukulukuluvut. Jos esimerkiksi kirjoitat ohjelmiisi 2, Perl nรคkee sen olevan 2.0000
Kokonaisluku literaalit:
Se koostuu yhdestรค tai useammasta numerosta, joita edeltรครค valinnaisesti plus tai miinus ja joka sisรคltรครค alaviivoja.
Perl-esimerkkejรค:
0; -2542; 4865415484645 #this also can be written with underscores (for clarity) : 4_865_415_484_645
Kuten nรคette - se ei ole mitรครคn erikoista. Mutta usko minua, tรคmรค on yleisin skalaarityyppi. Niitรค on kaikkialla.
Liukuluku literaalit:
Se koostuu numeroista, valinnaisesti miinus, desimaalipilkku ja eksponentti.
Perl-esimerkkejรค:
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

Oktaali-, heksadesimaali- ja binรครคriesitys:
Se on vaihtoehto desimaalijรคrjestelmรคlle. Sallikaa minun nรคyttรครค sinulle oktaali-, heksadesimaali- ja binรครคriesitys. Lyhyessรค taulukossa on kaikki tรคrkeรคt tiedot nรคistรค oudoista tyyleistรค:
| Edustus | pohja | Jatka |
|---|---|---|
| Octal | 8 | 0 (nolla) |
| Heksadesimaali | 16 | 0x |
| Binaarinen | 2 | 0b |
Perl-esimerkkejรค:
255; # 255 in decimal notation 0377; # 255 in octal notation 0xff; # 255 in hexadecimal notation 0b11111111; # 255 in binary notation
Kaikki nรคmรค arvot Perlille tarkoittavat samaa. Perl ei tallenna arvoja samassa muodossa. Se muuntaa sisรคisesti nรคmรค heksadesimaali-, binaari- ja oktaaliarvot desimaalilukuiksi.
Tehtรคvรค on yleisin skalaarioperaatio, ja se on hyvin yksinkertainen. Perl kรคyttรครค tรคtรค yhtรคlรคisyysmerkkiรค. Se ottaa lausekkeen arvon oikealta puolelta ja asettaa tรคmรคn arvon muuttujaamme.
Katsotaanpa esimerkkejรค:
$size=15; # give $size value of 15 $y = -7.78; # give $y value of -7.78
Lisรคksi voit laittaa muuttujaan paitsi numeron myรถs lausekkeen.
$z = 6 + 12 # give $z value of 18
Jouset
Kielet: Se on myรถs hyvin yksinkertainen skalaarityyppi.
Perl-merkkijonon enimmรคispituus riippuu tietokoneen muistin mรครคrรคstรค. Merkkijonon kokoa ei ole rajoitettu, mikรค tahansa mรครคrรค merkkejรค, symboleja tai sanoja voi muodostaa merkkijonosi. Lyhyimmรคssรค merkkijonossa ei ole merkkejรค. Pisin voi tรคyttรครค koko jรคrjestelmรคmuistin. Perl-ohjelmat voidaan kirjoittaa kokonaan 7-bittiseen ASCII-merkistรถรถn. Perl sallii myรถs minkรค tahansa 8- tai 16-bittisen merkistรถjen lisรครคmisen. ei-ASCII-merkkejรค merkkijonoliteraaaleissa. Perl on myรถs lisรคnnyt tuen Unicode UTF-8:lle.

Kuten numerot, myรถs merkkijonoja on kahta eri tyyppiรค:
- Yksittรคiset lainausmerkit merkkijono literaalit
- Double lainausmerkkijono literaaleja
Yksilainaiset merkkijonokirjaimet
Yksittรคisiรค lainausmerkkejรค kรคytetรครคn sisรคllyttรคmรครคn tiedot, jotka haluat ottaa kirjaimellisesti. Lyhyt esimerkki ja kaiken pitรคisi olla selvรครค:
Perl-esimerkkejรค:
#!/usr/bin/perl $num = 7; $txt = 'it is $num'; print $txt;
lรคhtรถ:
se on $num
Tรคssรค yksittรคisten lainausmerkkien vuoksi $num in arvoa ei ole otettu ja kirjaimelliset merkit '$','n', 'u' ja 'm' lisรคtรครคn $txt:n arvoon.
Double-lainatut merkkijonokirjaimet
Double lainausmerkkejรค kรคytetรครคn liittรคmรครคn tietoja, jotka on interpoloitava ennen kรคsittelyรค. Tรคmรค tarkoittaa, ettรค pakotettuja merkkejรค ja muuttujia ei yksinkertaisesti lisรคtรค kirjaimellisesti myรถhempiin toimintoihin, vaan ne arvioidaan paikan pรครคllรค. Esc-merkkejรค voidaan kรคyttรครค rivienvaihtojen, sarkainten jne. lisรครคmiseen.
Perl-esimerkkejรค:
$num = 7; $txt = "it is $num"; print $txt;
lรคhtรถ:
se on 7
Tรคssรค lainausmerkkien vuoksi arvo $num lisรคtรครคn arvoon $txt
Double-lainausmerkit interpoloivat skalaari- ja taulukkomuuttujia, mutta eivรคt tiivisteitรค. Toisaalta voit kรคyttรครค kaksoislainausmerkkejรค sekรค taulukoiden ettรค tiivisteiden osien interpoloimiseen.
Salaperรคinen \n
Harkitse seuraavaa ohjelmaa
Perl-esimerkkejรค:
print "hello \n";
lรคhtรถ:
hei
Perl ei nรคytรค vain "hello\n", vaan vain "hello". Miksi? Koska '\n' on erikoismerkki ja tarkoittaa, ettรค haluat siirtyรค uudelle riville, kun nรคytรคt tekstiรค ohjelmassasi. tulosta "hei\n uusi rivi"; Seuraava kysymys - onko muita erityisiรค merkkejรค? Kyllรค he ovat! Mutta รคlรค huoli - vain muutama. Tarkista alla oleva taulukko
| Rakentaa | Tuotetiedot |
|---|---|
| \n | uusi rivi |
| \r | palata |
| \t | kieleke |
| \f | muotosyรถttรถ |
| \b | askelpalautin |
| \a | soittokello |
| \e | paeta |
| \ 007 | mikรค tahansa oktaali ASCII-arvo (tรคssรค, 007 = kello) |
| \x7f | mikรค tahansa hex-arvo (tรคssรค, 7f = poista) |
| \\ | kenoviiva |
| \ โ | kaksoislainaus |
| \l | pieni seuraava kirjain |
| \L | pienet kaikki seuraavat kirjaimet \E asti |
| \u | iso seuraava kirjain |
| \U | kaikki seuraavat kirjaimet isoilla kirjaimilla \E asti |
| \E | Lopeta \L, \U |
Tiedรคn, ei ole olemassa "vain muutamia"โฆ Mutta usko minua, sinun tรคytyy tietรครค vain
Strings Variable
Se on sama operaatio, jonka nรคemme numeroiden mรครคrittรคmisessรค. Perl saa merkkijonomme yhtรคlรคisyysmerkin oikealta puolelta ja asettaa tรคmรคn merkkijonon muuttujaksi.
Perl-esimerkkejรค:
$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;
lรคhtรถ:
opetusohjelma 315
Kuten nรคet, voit laittaa numeroita ja merkkijonoja samoihin muuttujiin. Muuttujien luokkaa ei ole.
Merkkijonojen ketjutus (piste) :
Yhdistelmรคoperaattori "." yhdistรครค kaksi tai useampia kieliรค. Muistaa! Jos merkkijono sisรคltรครค lainausmerkkejรค, rivinvaihtoja, kenoviivaa, kaikki nรคmรค erikoismerkit on vaihdettava kenoviivalla.
Perl ' ' -muuttujien esimerkkejรค:
#!/usr/bin/perl $a = "Tom is"; $b = "favorite cat"; $c = $a ." mother's ". $b; print $c;
lรคhtรถ:
Tom on รคidin suosikkikissa
Jouset
"$a", "$b" ketjutetaan ja tallennetaan kohtaan "$c" kรคyttรคmรคllรค "." operaattori.
Lopussaโฆ
Muunnos vรคlillรค Numbers ja jouset:
Kuten tiedรคt, Perl muuntaa automaattisesti numerot merkkijonoiksi tarpeen mukaan. Mistรค Perl tietรครค, mitรค tarvitsemme juuri nyt? Tรคmรค on yksinkertaista - kaikki riippuu operaattorista (puhumme operaattoreista myรถhemmin, nyt, hyvรคksy vain, ettรค operaattoreita on paljon, eri numeroilla ja merkkijonoilla) Jos operaattori odottaa numeroa, Perl kรคyttรครค arvoa numerona . Jos operaattori odottaa merkkijonoa, Perl kรคyttรครค arvoa merkkijonona. Toisin sanoen - sinun ei tarvitse huolehtia tรคllaisesta muuntamisesta. Lyhyt esimerkki ja kaiken pitรคisi olla selvรครค:
Perl-esimerkkejรค:
$string = "43"; $number = 28; $result = $string + $number; print $result;
lรคhtรถ:
71
$merkkijonon arvo muunnetaan kokonaisluvuksi ja lisรคtรครคn $numeron arvoon.
Lisรคyksen tulos, 71, mรครคrรคtรครคn $resultille.
Muuttujan laajuus โ Access Modifiers
Voimme ilmoittaa skalaarin missรค tahansa ohjelmassa. Mutta sinun on mรครคritettรคvรค pรครคsyn muokkaaja
Modifioreita on 3 tyyppiรค
- my
- paikallinen
- meidรคn
My: Tรคmรคn avulla voit ilmoittaa minkรค tahansa muuttujan, joka on spesifinen lohkossa. eli kiharoiden sisรคllรค.
#!/usr/bin/perl
my $var=5;
if(1)
{
my $var_2 =$var;
}
print $var_2;
Ei lรคhtรถรค
Ohjelman tulos ei ole mitรครคn!

Yllรค olevassa esimerkissรค nรคet kaksi muuttujaa, joista toinen on if-lohkon sisรคllรค ($var_2) ja toinen If-lohkon ulkopuolella ($var). Muuttuja, joka on ilmoitettu lohkon ulkopuolella, on if-lohkon kรคytettรคvissรค, mutta if-lohkon sisรคllรค ilmoitettu muuttuja ei ole ulomman ohjelman kรคytettรคvissรค.
Paikallinen: Tรคmรคn avulla voimme itse asiassa peittรครค samat muuttujan arvot eri arvoiksi muuttamatta muuttujan alkuperรคistรค arvoa. Oletetaan, ettรค meillรค on muuttuja $a, jonka arvoksi on annettu 5, voit itse muuttaa sen muuttujan arvoa saman muuttujan ilmoittaminen uudelleen paikallisella avainsanalla muuttamatta muuttujan alkuperรคistรค arvoa, joka on 5. Katsotaanpa, miten tรคmรค toimii esimerkin avulla.
#!/usr/bin/perl
$var = 5;
{
local $var = 3;
print "local,\$var = $var \n";
}
print "global,\$var = $var \n";
Yllรค olevan ohjelman tulos on tรคllรค tavalla.
paikallinen, $var = 3
globaali, $var = 5
Nรคin voimme muuttaa muuttujan arvoa vaikuttamatta alkuperรคiseen arvoon.
Meidรคn: Kun muuttuja on ilmoitettu pรครคsymuuntimella "our", sitรค voidaan kรคyttรครค koko paketissa. Oletetaan, ettรค sinulla on Perl-moduuli tai paketti test.pm, jossa on muuttuja, jonka laajuus on meidรคn. Tรคtรค muuttujaa voidaan kรคyttรครค millรค tahansa komentosarjalla, joka kรคyttรครค kyseistรค pakettia.
Jos olet tosissaan ohjelmoinnissa Perlissรค, sinun tulee aloittaa ohjelmasi
#!/usr/local/bin/perl
kรคytรค tiukasti;
Tรคmรค auttaa sinua kirjoittamaan parempaa ja selkeรคmpรครค koodia. "Kรคytรค tiukkaa" ottaa kรคyttรถรถn tiukan kรคytรคnnรถn, joka saa sinut ilmoittamaan muuttujasi avainsanallani.
Tรคmรค on hyvรค ohjelmointikรคytรคntรถ
#!/usr/local/bin/perl use strict; $var = 10; print "$var";
Tulos: Virhe
#!/usr/local/bin/perl use strict; my $var = 10; print "$var";
lรคhtรถ:
10
Perl Array
Mikรค on Perl Array?
Array on erityinen muuttuja, joka tallentaa tiedot luettelon muodossa; jokaiseen elementtiin pรครคsee kรคsiksi kรคyttรคmรคllรค indeksinumeroa, joka on yksilรถllinen jokaiselle elementille. Voit tallentaa taulukkoosi numeroita, merkkijonoja, kelluvia arvoja jne. Tรคmรค nรคyttรครค hyvรคltรค, joten kuinka luomme taulukon Perlissรค? Perlissรค voit mรครคrittรครค taulukon kรคyttรคmรคllรค @-merkkiรค ja nimeรค, jonka haluat antaa. Harkitsemme taulukon mรครคrittรคmistรค Perlissรค.
minun @array;
Nรคin mรครคrittelemme taulukon Perlissรค; saatat miettiรค, kuinka meidรคn tรคytyy tallentaa tietoja siihen. On olemassa erilaisia โโtapoja tallentaa tietoja taulukkoon. Tรคmรค riippuu siitรค, kuinka aiot kรคyttรครค sitรค.
my @array=(a,b,c,d); print @array;
lรคhtรถ:
abcd
Tรคmรค on taulukko, jossa on 4 elementtiรค.
Taulukkoindeksi alkaa 0:sta ja pรครคttyy ilmoitettuun enimmรคiskokoonsa, tรคssรค tapauksessa indeksin enimmรคiskoko on 3.
Perl Array esimerkki
Voit myรถs ilmoittaa taulukon yllรค olevalla tavalla; Ainoa ero on se, ettรค se tallentaa tiedot taulukkoon pitรคen vรคlilyรถnnin erottimena. Tรคssรค qw() tarkoittaa lainaussanaa. Tรคmรคn toiminnon merkitys on luoda sanaluettelo. Voit kรคyttรครค qw:tรค useilla tavoilla taulukon ilmoittamiseen.
@array1=qw/a b c d/;
@array2= qw' p q r s';
@array3=qw { v x y z};
print @array1;
print @array2;
print @array3;
lรคhtรถ:
abcdpqrsvxyz
Oletetaan, ettรค haluat mรครคrittรครค arvon 5:lleth taulukon elementti, miten aiomme tehdรค sen.
$array [4] ='e';
Sequential Array
Perรคkkรคiset taulukot ovat niitรค, joihin tallennat tietoja perรคkkรคin. Oletetaan, ettรค haluat tallentaa taulukkoon 1-10 numeroa tai aakkosta az. Sen sijaan, ettรค kirjoittaisit kaikki kirjaimet, voit kokeilla jotain alla olevaa -
@numbers= (1..10); print @numbers; #Prints numbers from 1 to 10;
lรคhtรถ:
12345678910
Perl Array Koko
Meillรค on taulukko, joka on jo saatavilla, etkรค tiedรค, mikรค sen koko on, joten mikรค on mahdollinen tapa lรถytรครค se.
@array= qw/a b c d e/; print $size=scalar (@array);
Voimmeko saada taulukon koon ilman funktioita? Kyllรค me voimme.
@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
lรคhtรถ:
5
5
Dynaaminen Array
Yllรค olevaa menetelmรครค taulukon ilmoittamiseksi kutsutaan staattiset taulukot, jossa tiedรคt taulukon koon.
Mikรค on Dynamic Array?
Dynaamiset taulukot ovat sellaisia, jotka mรครคritรคt mรครคrittรคmรคttรค niille mitรครคn arvoa. Joten milloin tarkalleen tallennetaan arvot kyseiseen taulukkoon? Yksinkertaista, sรคilytรคmme ne ajon aikana. Tรคssรค on yksinkertainen ohjelma sitรค varten.
Kรคytรคmme joitain sisรครคnrakennettuja Perl-toimintoja tรคmรคn tehtรคvรคn suorittamiseen.
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.
}
lรคhtรถ:
Tรคmรค on
erรครคnlainen dyn
mic
rr
y
Split-funktio jakaa merkkijonon sisรคllรถn taulukoksi sille annetun erottimen perusteella. Tรคmรค toiminto poistaa myรถs erottimen merkkijonosta, tรคssรค tapauksessa se on 'a';
Push, Pop, shift, unshift Perl-taulukoille:
Nรคitรค toimintoja voidaan kรคyttรครค Perlissรค taulukon elementtien lisรครคmiseen/poistamiseen.
- Perl Push: lisรครค taulukkoelementin olemassa olevan taulukon loppuun.
- Perl Pop: poistaa viimeisen elementin taulukosta.
- Perl Shift: poistaa ensimmรคisen elementin taulukosta.
- Perl Unshift: lisรครค elementin taulukon alkuun.

Katsotaanpa esimerkkiรค, jossa voimme kรคyttรครค alla olevia toimintoja.
@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";
lรคhtรถ:
1.: ma ti ke
2. kun tyรถntรถ: ma ti ke to
3. kun vuoro pois : pe ma ti ke to
4. kun pop : pe ma ti ke
5. kun vuoro: ma ti ke
Perl Hashes
Miksi tarvitsemme Hashia?
Olemme jo oppineet skalaareista ja taulukoista aiemmissa osioissa.
Mitรค skalaarit tarkalleen ottaen tekevรคt? Se tallentaa vain kokonaislukuja ja merkkijonoja.
Mitรค taulukot tarkalleen ottaen tekevรคt? Se on kokoelma skalaareja, jossa pรครคset jokaiseen taulukon elementtiin indeksien avulla. Mutta onko hyvรค idea kรคyttรครค taulukkoa, kun sinulla on satoja ja tuhansia tietueita? Unohdamme millรค indeksillรค on mikรค arvo. Tรคmรคn tilanteen voittamiseksi meillรค on jotain perl hashin kaltaista.
Mitรค hashit ovat?
Hashissa voi myรถs olla niin monta skalaaria kuin matriisi mahtuu. Ainoa ero on, ettรค meillรค ei ole indeksiรค, vaan meillรค on avaimet ja arvot. Hash voidaan ilmoittaa, alkaen %:sta, jota seuraa tiivisteen nimi. Katsotaanpa esimerkki siitรค, kuinka voimme mรครคritellรค Perl-hashin ja kuinka voimme erottaa sen taulukosta
Harkitse esimerkkiรค kolmesta ihmisestรค ja heidรคn ikรคnsรค on esitetty taulukossa.
@array=('Sainath',23,'Krishna',24,'Shruthi',25); #This is how an array looks.
print @array;
lรคhtรถ:
Sainath33Krishna24Shruthi25
Tรคllรค tavalla on vaikea tietรครค yksittรคisiรค iรคt, koska meidรคn on muistettava sekรค kaikkien ihmisten nimien hakemistopaikat ettรค iรคt. Se voi olla yksinkertaista, kun sinulla on 3 nimeรค, mutta kun sinulla on 1000 tai enemmรคn? Tiedรคt vastauksen.

Tรคmรคn voimme voittaa kรคyttรคmรคllรค tiivistettรค.
Hash-esimerkki:
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.
lรคhtรถ:
Sainath33Krishna24Shruthi25Sainath33Krishna24Shruthi25
Olemme nyt julistaneet hashin, hienoa!! Mutta miten pรครคsemme kรคsiksi tai tulostamme sen? Jokaiseen hash-elementtiin tulee pรครคstรค kรคsiksi siihen liittyvรคllรค avaimella, jolle annetaan arvo. Hashissa on siis yksi-yksi-kuvaus kunkin avaimen ja arvon vรคlillรค.
Jotta voit tulostaa jonkun henkilรถn iรคn, sinun tarvitsee vain muistaa kyseisen henkilรถn nimi.
print $hash{'Krishna'}; # This how we should access a hash. Key enclosed within {}.
Olet ehkรค ihmetellyt, miksi kรคytin $hash{KeyName}. Muista, ettรค hash on jรคlleen kokoelma skalaareja. Joten voimme kรคyttรครค dollaria, joka edustaa skalaaria, pรครคstรคksemme jokaiseen hash-elementtiin.

Huomautus: Jokaisen hash-avaimen tulee olla yksilรถllinen tai muuten se ohittaa aiemmin mรครคritetyn arvon.
Kuinka voimme mรครคrittรครค tiivisteen toiselle hashille? Yksinkertaista, samalla tavalla kuin meillรค
Voimme myรถs tulostaa koko hashin.
%hash=( 'Tom' => 23); %newHash=%hash; # Assigning hash to a new hashprint %newHash; print %newHash;
lรคhtรถ:
Tom23
Lisรครค Perl Hashes
Kuten nรคet, meillรค on jo hash %newHash, ja nyt meidรคn on lisรคttรคvรค siihen lisรครค merkintรถjรค.
$newHash{'Jim'}=25;
$newHash{'John'}=26;
$newHash{'Harry'}=27;
print %newHash;
lรคhtรถ:
Jim25John26Harry27
Perl Delete -avain
Haluat ehkรค poistaa merkinnรคn hashista. Nรคin voimme tehdรค sen.
delete $newHash{'Jim'};#This will delete an entry from the hash.
Poista on Perlin sisรครคnrakennettu toiminto. Tรครคllรค nรคemme esimerkin hajautusarvon mรครคrittรคmisestรค taulukkoon.
@array=%newHash; print "@array";
Huomautus: Aina kun tulostat tiivisteen tai tallennat tiivisteen taulukkoon. Jรคrjestys voi aina vaihdella. Se ei ole aina sama.
Voimme mรครคrittรครค taulukolle vain tiivisteen avaimia tai arvoja.
@arraykeys= keys(%newHash); @arrayvalues=values(%newHash); print "@arraykeys\n"; print "@arrayvalues\n"; # \n to print new line.
Jos haluat poistaa kaikki merkinnรคt hashista, voimme mรครคrittรครค hashin suoraan nollaksi.
%newHash=();# Tรคmรค mรครคrittรครค hajautusarvon uudelleen ilman merkintรถjรค.
Perlin ehdolliset lausekkeet
Voimme kรคyttรครค ehdollisia lausekkeita Perlissรค. Joten mitรค ovat ehdolliset lausunnot? Ehdolliset lausunnot ovat niitรค, joissa itse asiassa tarkistat, tรคyttyvรคtkรถ koodisi tietyt olosuhteet.
Ajattele esimerkkiรค, ostat hedelmiรค, etkรค pidรค hinnasta yli 100 taalaa. Joten sรครคntรถ tรคssรค on 100 taalaa.
Perl tukee kahdenlaisia โโehdollisia lausekkeita; ne ovat jos ja elleivรคt.
Perl If
Jos koodilohko suoritetaan, kun ehto on tosi.

my $a=5;
if($a==5)
{
print "The value is $a";
}
lรคhtรถ:
5
Perl jos muuten
Tรคmรค nรคyttรครค hyvรคltรค. Ajatellaanpa tilannetta, jossa $a ei ole 5.
my $a=10;
if($a==5)
{
print "The values is $a ---PASS";
}
else
{
print "The value is $a ---FAIL";
}
lรคhtรถ:
Arvo on 10 โ FAIL
Tรคllรค tavalla voimme hallita vain yhtรค ehtoa kerrallaan. Onko se rajoitus? Ei, voit myรถs hallita erilaisia โโehtoja kรคyttรคmรคllรค ifโฆ elsif โฆ else.
Perl Else If
my $a=5;
if($a==6)
{
print "Executed If block -- The value is $a";
}
elsif($a==5)
{
print "Executed elsif block --The value is $a";
}
else
{
print "Executed else block โ The value is $a";
}
lรคhtรถ:
Suoritettu elsif-lohko โ Arvo on 5
Yllรค olevassa tapauksessa elsif-lohko suoritetaan, kun $a on yhtรค suuri kuin 5.
Saattaa olla tilanteita, joissa sekรค if- ettรค elsif-koodilohkot epรคonnistuvat. Tรคssรค skenaariossa else-koodilohko suoritetaan. Voit itse asiassa poistaa else-koodin tarkistuksen, jos et halua sisรคllyttรครค siihen.
Perl sisรคkkรคinen If
Tรคssรค tapauksessa voit kรคyttรครค if-koodilohkoa yhdessรค if-koodilohkossa.
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";
}
lรคhtรถ:
Ensimmรคisen muun lohkon sisรคllรค โ Arvo on 1
Suorita sama koodi muuttamalla $a:n arvoa; voit selvittรครค loput.
Perl Ellei
Sinulla on jo kรคsitys mitรค jos tekee (jos ehto on tosi, se suorittaa koodilohkon). Ellei se ole pรคinvastainen kuin if, ellei koodilohko suoritetaan, jos ehto on epรคtosi.
my $a=5;
unless($a==5)
{
print "Inside the unless block --- The value is $a";
}
else
{
print "Inside else block--- The value is $a";
}
lรคhtรถ:
Ensimmรคisen muun lohkon sisรคllรค โ Arvo on 1
Arvaa mikรค on tulos. Olet oikeassa!!!!!. Tulos on else-lohkon print-lause. Ehdon vuoksi, ellei koodilohko ole tosi, muista, ellei lohko suoriteta vain, jos ehto on epรคtosi. Muuta $a:n arvoa ja suorita koodi, niin nรคet eron.
Perl Kรคyttรคmรคllรค if
$a= " This is Perl";
if($a eq "SASSDSS"){
print "Inside If Block";
}
else
{
print "Inside else block"
}
lรคhtรถ:
Muun lohkon sisรคllรค
Kรคyttรครค ellei
$a= " This is Perl";
unless($a eq "SASSDSS"){
print "Inside unless Block";
}
else
{
print "Inside else block"
}
lรคhtรถ:
Sisรคllรค, ellei Block
Perl Loops - ohjausrakenteet
Perl tukee ohjausrakenteita, jotka ovat samanlaisia โโkuin muut ohjelmointikielet. Perl tukee neljรครค tyyppiรค ohjausrakenteita foreach, while ja till. Kรคytรคmme nรคitรค lauseita toistuvasti jonkin koodin suorittamiseen.
Silmukalle Perl
Koodilohko suoritetaan, kunnes ehto tรคyttyy. Otetaan esimerkki siitรค, kuinka Perl silmukkaa taulukon.
my @array=(1..10);
for(my $count=0;$count<10;$count++)
{
print "The array index $count value is $array[$count]";
print "\n";
}
lรคhtรถ:
Taulukon indeksin 0 arvo on 1
Taulukon indeksin 1 arvo on 2
Taulukon indeksin 2 arvo on 3
Taulukon indeksin 3 arvo on 4
Taulukon indeksin 4 arvo on 5
Taulukon indeksin 5 arvo on 6
Taulukon indeksin 6 arvo on 7
Taulukon indeksin 7 arvo on 8
Taulukon indeksin 8 arvo on 9
Taulukon indeksin 9 arvo on 10
Tรคssรค ()-lausekkeessa on mukana monia lauseita. Jokaiselle niistรค on oma merkitys.
for ( alustus ; ehto; lisรคys)
Tรคssรค on toinen tapa kรคyttรครค.
for(1..10)
{
print "$_ n";
print "\n";
}
lรคhtรถ:
1n
2n
3n
4n
5n
6n
7n
8n
9n
10n
Perl Foreach
Jokaiselle lausekkeelle voidaan kรคyttรครค samalla tavalla kuin lauseketta; Suurin ero on, ettรค meillรค ei ole kunnon tarkistusta ja lisรคystรค tรคssรค.
Otetaan sama esimerkki foreach perlin kanssa.
my @array=(1..10);
foreach my $value (@array)
{
print " The value is $value\n";
}
lรคhtรถ:
Arvo on 1
Arvo on 2
Arvo on 3
Arvo on 4
Arvo on 5
Arvo on 6
Arvo on 7
Arvo on 8
Arvo on 9
Arvo on 10
Foreach ottaa taulukon jokaisen elementin ja mรครคrittรครค sen arvon $var:lle jokaiselle iteraatiolle. Voimme myรถs kรคyttรครค $_ samaan.
my @array=(1..10);
foreach(@array)
{
print " The value is $_ \n"; # This is same as the above code.
}
lรคhtรถ:
Arvo on 1
Arvo on 2
Arvo on 3
Arvo on 4
Arvo on 5
Arvo on 6
Arvo on 7
Arvo on 8
Arvo on 9
Arvo on 10
Tรคmรค nรคyttรครค hyvรคltรค matriisiin pรครคsyรค varten. Entรค tiiviste, miten saamme hajautusavaimet ja arvot foreachilla?
Voimme kรคyttรครค foreachia pรครคstรคksemme kรคsiksi hashin avaimiin ja arvoihin silmukoimalla sitรค.

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $key (keys %hash)
{
print "$key \n";
}
lรคhtรถ:
Mickey
Tomi
Jerry
Saatat ihmetellรค, miksi kรคytimme avaimia foreach(). Keys on Perlin sisรครคnrakennettu toiminto, jolla voimme nopeasti kรคyttรครค hashin avaimia. Entรค arvot? Voimme kรคyttรครค arvot-funktiota hajautusarvon arvojen saamiseen.
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";
}
lรคhtรถ:
arvo on 24
arvo on 23
arvo on 25
Perl While
Perl While -silmukka on ohjausrakenne, jossa koodilohko suoritetaan, kunnes ehto on tosi.
Koodilohko poistuu vain, jos ehto on epรคtosi.
Otetaan esimerkki Perl While -silmukasta.

Tรคssรค on ongelma, joka vaatii kรคyttรคjรคn syรถtteen ja poistu vasta numerosta 7.
#!/usr/bin/perl
$guru99 = 0;
$luckynum = 7;
print "Guess a Number Between 1 and 10\n";
$guru99 = <STDIN>;
while ($guru99 != $luckynum)
{
print "Guess a Number Between 1 and 10 \n ";
$guru99 = <STDIN>;
}
print "You guessed the lucky number 7"
lรคhtรถ:
Arvaa numero vรคliltรค 1-10
9
Arvaa numero vรคliltรค 1-10
5
Arvaa numero vรคliltรค 1-10
7
Arvasit onnennumeron 7
Yllรค olevassa esimerkissรค while-ehto ei ole tosi, jos syรถtรคmme muun syรถtteen kuin '7'.
Jos nรคet kuinka while toimii tรครคllรค, koodilohko suoritetaan vain, jos ehto hetken kuluttua on tosi.
Perl do-while
Do while -silmukka suoritetaan ainakin kerran, vaikka while-osion ehto olisi epรคtosi.
Otetaan sama esimerkki kรคyttรคmรคllรค do while -toimintoa.
$guru99 = 10;
do {
print "$guru99 \n";
$guru99--;
}
while ($guru99 >= 1);
print "Now value is less than 1";
lรคhtรถ:
10
9
8
7
6
5
4
3
2
1
Nyt arvo on pienempi kuin 1
Perl asti
Kunnes-koodilohko on samanlainen kuin ellei ehdollisessa lauseessa. Tรคssรค koodilohko suoritetaan vain, jos ehto lohkossa on epรคtosi.
Otetaanpa sama esimerkki, jota kรคytimme jonkin aikaa.
Tรคssรค on ongelma, joka vaatii syรถtteen kรคyttรคjรคltรค ja joka ei poistu ennen kuin annettu nimi on muu kuin "sai".
print "Enter any name \n";
my $name=<STDIN>;
chomp($name);
until($name ne 'sai')
{
print "Enter any name \n";
$name=<STDIN>;
chomp($name);
}
lรคhtรถ:
Kirjoita mikรค tahansa nimi sai
Perl tehdรค kunnes:
Do till -toimintoa voidaan kรคyttรครค vain, kun edellytyksenรค on oltava epรคtosi, ja se tulee suorittaa vรคhintรครคn kerran.
print "Enter any name \n";
my $name=<STDIN>;
chomp($name);
do
{
print "Enter any name \n";
$name=<STDIN>;
chomp($name);
}until($name ne 'sai');
lรคhtรถ:
Kirjoita mikรค tahansa nimi Howard
Kirjoita mikรค tahansa nimi Sheldon
Kirjoita mikรค tahansa nimi sai
Suorita esimerkkikoodit while, do-while, till ja do-until nรคhdรคksesi eron.
Perl OperaTor
Mikรค on OperaTor?
Operatorit tietokonekielellรค osoittavat toimintoa, joka voidaan suorittaa joillekin muuttujille tai arvoille, joita tietokone ymmรคrtรครค. Perl on sisรคllyttรคnyt suurimman osan Operatorit C-kielestรค. Perlissรค on monia operaattoreita muihin ohjelmointikieliin verrattuna. Operatorit luokitellaan aritmeettisiin, loogisiin, relaatiooperaattoreihin ja osoitusoperaattoreihin.
Aritmeettinen Operatorit:
Aritmeettiset operaattorit ovat niitรค, joita voidaan kรคyttรครค joidenkin matemaattisten perusoperaatioiden suorittamiseen. Nรคmรค aritmeettiset operaattorit ovat binรครคrioperaattoreita, joissa tarvitsemme kaksi argumenttia perusoperaation suorittamiseen. Voimme kรคyttรครค unaarioperaattoreita myรถs muihin perustoimintoihin; nรคet eron alla olevista esimerkeistรค.
| OperaTor | Tuotetiedot | esimerkki |
|---|---|---|
|
+ |
Lisรคystoiminto, jota kรคytetรครคn kahden arvon tai muuttujan lisรครคmiseen arvoja pitรคmรคllรค |
$x = 5+6; # tai $y = 6; $z=$x+$y; |
|
- |
Vรคhennysoperaattori, jota kรคytetรครคn kahden arvon tai muuttujan pitoarvojen vรคhentรคmiseen |
$x = 6-5; # tai $y = 6; $z=$x-$y; |
|
* |
Kertolaskuoperaattori, jota kรคytetรครคn kahden arvon tai muuttujan pitoarvojen kertomiseen |
$x=6*5; # tai $y = 6; $z=$x*$y; |
|
/ |
Jakooperaattori, jota kรคytetรครคn kahden arvon tai muuttujan pitoarvojen jakamiseen |
$x = 36/6; # tai $y = 6; $z=$x/$y; |
|
** |
Eksponenttioperaattori, jota kรคytetรครคn eksponentin ja arvon saamiseen. Esim: 22 = 43 = 27 |
$x=5**5; # tai $x = 4; $y = 2; $z=$x**$y; |
|
% |
Modulus-operaattoria kรคytetรครคn muistutuksen saamiseen kahden arvon tai muuttujan jakamisen aikana |
$x = 5%2; # tai $x = 10; $y = 2; $z=$x % $y; |
|
++ |
Unaarinen summausoperaattori, joka lisรครค muuttujan arvoa yhdellรค |
$x = 5; $x++; Or ++$x; |
|
- |
Unaarinen Vรคhennysoperaattori, joka pienentรครค muuttujan arvoa yhdellรค |
$x = 5; $xโ; # viestivรคhennys Or โ$x;# esivรคhennys |
Esimerkki kaikkien yllรค olevien toimintojen suorittamisesta.
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");
lรคhtรถ:
Lisรคys 10 ja 2 on 12
Ali 10:stรค ja 2:sta on 8
Mul 10 ja 2 on 20
Jako 10 ja 2 on 5
Exp 10 ja 2 on 100
Mod of 10 ja 2 on 0
Toimeksianto Operatorit:
Tehtรคvรคoperaattorit yksinkertaisesti antavat arvoja muuttujille, mutta tรคssรค on vielรค yksi asia, joka meidรคn on muistettava: mรครคritysoperaattorit suorittavat myรถs aritmeettisia operaatioita ja antavat uuden arvon samalle muuttujalle, jolle toiminto suoritetaan.
| OperaTor | Tuotetiedot | esimerkki |
|---|---|---|
|
+= |
Lisรคysoperaattori, jota kรคytetรครคn arvon lisรครคmiseen ja mรครคrittรคmiseen samalle muuttujalle |
$x = 4; $x+=10; |
|
-= |
Vรคhennysoperaattori, jota kรคytetรครคn vรคhentรคmรครคn ja antamaan arvo samalle muuttujalle |
$x = 4; $x-=10; |
|
*= |
Kertolaskuoperaattori, jota kรคytetรครคn arvon lisรครคmiseen ja mรครคrittรคmiseen samalle muuttujalle |
$x = 4; $x*=10; |
|
/= |
Jakooperaattori, jota kรคytetรครคn jakamiseen ja arvon mรครคrittรคmiseen samalle muuttujalle |
$x = 4; $x/=10; |
|
** = |
Eksponenttioperaattori, jota kรคytetรครคn eksponentin saamiseen ja arvon mรครคrittรคmiseen samalle muuttujalle |
$x = 4; $x**=10; |
|
%= |
Modulus-operaattori, jota kรคytetรครคn muistutuksen saamiseen jaon aikana ja arvon mรครคrittรคmiseen samalle muuttujalle |
$x = 10; $x%=4; |
Esimerkki kaikkien yllรค olevien toimintojen suorittamisesta.
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");
lรคhtรถ:
Lisรครค = 15
Ala = 10
Mul = 50
Div = 10
Looginen ja suhteellinen Operatorit:
Perl kรคyttรครค loogisia operaattoreita numeroiden ja merkkijonojen vertailuun. Useimmiten ehdollisissa lauseissa kรคytetรครคn loogisia operaattoreita.
Looginen ja suhteellinen OperaTors Perlissรค
| OperaTor | Tuotetiedot |
|---|---|
|
==tai ekv |
Operatorilla tarkistetaan, ovatko molemmat muuttujat yhtรค suuret |
|
!=Tai ei |
Operatorilla tarkistetaan, eivรคtkรถ molemmat muuttujat ole samat |
|
> tai gt |
Operator tapana tarkistaa onko A on suurempi kuin B |
|
<or lt |
Operator tapana tarkistaa onko A on pienempi kuin B |
|
>=tai ge |
Operator tapana tarkistaa onko A on suurempi tai yhtรค suuri kuin B |
|
<=tai le |
Operator tapana tarkistaa onko A on pienempi tai yhtรค suuri kuin B |
|
|| tai tai |
Operakรคytetรครคn tarkistamaan joko A:n tai B:n pitoarvo |
|
&&tai ja |
Operatorilla, jolla tarkistetaan sekรค A:n ettรค B:n pitoarvo |
Otetaan esimerkki, jossa voimme selittรครค kaikki skenaariot.
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");
}
lรคhtรถ:
Totta - yhtรค kuin 5 ja 5
Totta - ei ole yhtรค suuri kuin 6 ja 7
Totta - 7 suurempi kuin 6
Totta - 6 vรคhemmรคn kuin 7
Totta - 6 vรคhemmรคn kuin 7
Totta - 7 suurempi kuin 6
Voit nรคhdรค esimerkkejรค loogisista operaattoreista myรถhemmissรค osioissa.
Perlin erikoismuuttujat
Mikรค on Perlin erikoismuuttujat?
Erikoismuuttujat Perlissรค ovat niitรค, joilla on jokin ennalta mรครคrรคtty merkitys. Nรคmรค muuttujat on merkitty joko oikealla nimellรค tai vรคlimerkkisymboleilla. Meillรค on erityinen muuttuja kaikille Perl-tuetuille muuttujille, kuten skalaari-erikoismuuttujat, Array-erikoismuuttujat, hash-erikoismuuttujat. Suurin osa kรคyttรคmistรคmme erikoismuuttujista on skalaareja.
Kun haluamme kรคyttรครค erikoismuuttujaa sen nimen kanssa, meidรคn on ladattava Perl-moduuli 'kรคytรค englantia', jotta Perl-tulkki sanotaan nimenomaisesti, ettรค aiomme kรคyttรครค erikoismuuttujia sen Nimen avulla.
Skalaari-erikoismuuttujat
| Muuttuja | Tuotetiedot |
|---|---|
|
$_$ARG |
Tรคmรค on oletusmuuttuja, joka tallentaa nykyiset arvot. |
|
$0 tai $PROGRAM_NAME |
Tallentaa Perl-komentosarjan tiedostonimen. |
|
$/ |
Syรถtetietueen erotin, tรคmรคn oletusarvo on \n, joka on rivinvaihtomerkki |
|
$. |
Sisรคltรครค luettavan tiedoston nykyisen rivinumeron |
|
$, |
Tulostuskentรคn erotin, jota kรคytetรครคn pรครคasiassa print()-kรคskyssรค. Tรคmรคn oletusarvoksi on asetettu 0, voimme muuttaa tรคmรคn muuttujan arvoa. |
|
$\ |
Tulostietueen erotin, tรคmรคn muuttujan arvo on tyhjรค; voimme antaa tรคlle minkรค tahansa arvon, jota print()-kรคsky kรคyttรครค tulostettaessa. |
|
$# |
Tรคtรค muuttujaa kรคytetรครคn tulostemuodossa numeroita tulostettaessa. |
|
$%$FORMAT_PAGE_NUMBER |
Sรคilyttรครค luetun tiedoston nykyisen sivunumeron. |
|
$=$FORMAT_LINES_PER_PAGE |
Sรคilyttรครค luetun tiedoston nykyisen sivun pituuden. |
|
$-$FORMAT_LINES_LEFT |
Sรคilyttรครค sivulta tulostettavien rivien mรครคrรคn. |
|
$~$FORMAT_NAME |
Format Name: Sรคilyttรครค parhaillaan valitun lรคhdรถn muodon oletusarvoisesti tiedoston kahvan nimen. |
|
$^$FORMAT_TOP_NAME |
Sรคilyttรครค tiedostokรคsittelijรคn otsikkomuodon arvon, oletusarvo on _TOP, jota seuraa tiedostokahvan nimi. |
|
$|$OUTPUT_AUTOFLUSH |
Oletusarvo on nolla; tรคtรค kรคytetรครคn tulostuspuskurin tyhjentรคmiseen jokaisen write() tai print() jรคlkeen. |
|
$$ |
Pitรครค Perl-tulkin kรคynnissรค olevan prosessin numeron. |
|
$? |
Tilakoodi: Putki- ja jรคrjestelmรคkutsu. Suoritetun komennon palautustila. |
|
$&$MATCH |
Sรครคnnรถllisissรค lausekkeissa kรคytettynรค tรคmรค sisรคltรครค merkkijonon viimeisestรค onnistuneesta kaavavastaavuudesta. |
|
$`$ PREMATCH |
Sรครคnnรถllisissรค lausekkeissa kรคytettynรค tรคmรค sisรคltรครค merkkijonon, jota edeltรครค viimeinen onnistunut kaavaosuma. |
|
$'$ POSTMATCH |
Sรครคnnรถllisissรค lausekkeissa kรคytettynรค tรคmรค sisรคltรครค merkkijonon, jota seuraa viimeinen onnistunut kaavaosuma. |
|
$+$LAST_PAREN_MATCH |
Sรคilyttรครค viimeisen hakasulkeen merkkijonon, joka vastaa viimeistรค kuviohakua. |
|
$ |
$1, $2, $3โฆ. Pitรครค kuvion arvot jรคrjestyksessรค. |
|
$[ |
Ensimmรคinen indeksi: Array, alimerkkijono. |
|
$] |
Versio Perlistรค. |
|
$โ |
Luetteloelementtien erotin, oletusarvo on vรคlilyรถnti. |
|
$; |
Alaindeksien erotin, jota kรคytetรครคn moniulotteisissa taulukoissa |
|
$! |
Numeerisessa kontekstissa tulostaa virhenumeron. Tulosta virhe merkkijonokontekstissa. |
|
$@ |
Sรคilyttรครค syntaksivirhetiedot, joita kรคytetรครคn, kun eval() on kรคytรถssรค. |
|
$< |
Sillรค on komentosarjaa suorittavan prosessin todellinen UID (kรคyttรคjรคtunnus). |
|
$> |
Sisรคltรครค komentosarjaa suorittavan prosessin tehokkaan UID:n. |
|
$( |
Sillรค on komentosarjaa suorittavan prosessin todellinen GID (ryhmรคtunnus). |
|
$) |
Sรคilyttรครค komentosarjaa suorittavan prosessin tehokkaan GID:n. |
|
$^D$VIRHEISTUS |
Sรคilyttรครค virheenkorjauslippujen nykyisen arvon. |
|
$^C |
Sรคilyttรครค lipun nykyisen arvon, kun -c-komentorivikytkintรค kรคytetรครคn. |
|
$^F |
Jรคrjestelmรคtiedostojen enimmรคiskuvaaja on oletusarvona 2 |
|
$^I$INPLACE_EDIT |
Sรคilyttรครค komentorivikytkimen โi arvon. |
|
$^M |
Erikoismuistivarastoa voidaan kรคyttรครค, kun Perl-skripti kuolee muistin loppumisen vuoksi. |
|
$^O$OSNAME |
Operajรคrjestelmรคtiedot tallennetaan. 'Linux' Linux-jรคrjestelmille, 'mswin32' Windows jรคrjestelmรคt. |
|
$^T$BASETIME |
Aika, jolloin skriptit ovat kรคynnissรค sekunneissa. |
|
$^W$VAROITUS |
-w-komentorivikytkimen nykyinen arvo. Varoituskytkin. |
|
$ARGV |
Nykyisen tiedoston nimi, kun <> on kรคytรถssรค. |
Array-erikoismuuttujat:
| Muuttuja | Tuotetiedot |
|---|---|
|
@INC |
Sisรคltรครค luettelon poluista, joissa Perl-kirjastomoduuleja tai komentosarjoja voidaan tarkastella suoritettaessa nykyistรค komentosarjaa. Tรคtรค @INC:tรค kรคytetรครคn useissa ja vaativat kรคskyt nรคiden kirjastomoduulien polkujen tutkimiseen. |
|
@ARGV |
Tallentaa vรคlitetyt komentoriviargumentit. |
|
@_ |
Kรคytetรครคn aliohjelmissa, kun parametrit vรคlitetรครคn aliohjelmille. |
|
@F |
Tรคmรค on matriisi, johon syรถttรถrivit tallennetaan, kun automaattinen split โa (kรคytetรครคn komentorivikytkintรค). |
Hash-erikoismuuttujat:
| Muuttuja | Tuotetiedot |
|---|---|
|
%INC |
Tiedostonimi on avaimet; arvot ovat polku kyseisiin tiedostoihin. Kรคytรถssรค tee, kรคytรค ja vaadi. |
|
%ENV |
Jรคrjestelmรคn ympรคristรถmuuttujat. |
|
%SIG |
Signals kรคsittelijรค. |
Perl sรครคnnรถllinen lauseke
Mikรค on sรครคnnรถllinen lauseke?
Perl-sรครคnnรถllinen lauseke on riittรคvรคn vahva sovittamaan lauseen tai lausekkeiden ryhmรคn merkkijonokavoja. Sรครคnnรถllisiรค lausekkeita kรคytetรครคn enimmรคkseen tekstin jรคsentรคmiseen, kuvioiden sovittamiseen ja paljon muuhun vaatimukseen perustuen. Meillรค on tiettyjรค operaattoreita, joita kรคytetรครคn erityisesti sรครคnnรถllisen lausekkeen kuvion sitomisessa =~ ja !~. Nรคmรค ovat testi- ja mรครคritysoperaattoreita.
Sรครคnnรถllinen lauseke OperaTors
Sรครคnnรถllinen lauseke OperaTors Perlissรค
- Perl Match โ m//
- Perl-korvike โ s///
- Perl transliteraatti โ tr///
Ennen kuin jatkamme eteenpรคin, meidรคn on tiedettรคvรค muutamia asioita sรครคnnรถllisestรค lausekkeesta; Perl Regex -syntaksissa on tiettyjรค asioita, kuten metamerkkejรค, yleismerkkejรค.
| Char | Merkitys |
|---|---|
|
\ |
Erikois tai lainaus |
|
* |
Vastaa 0 tai useampia merkkiรค |
|
+ |
Vastaa 1 tai useampia merkkiรค |
|
? |
Vastaa 0 tai 1 merkkiรค |
|
| |
Voidaan kรคyttรครค vaihtoehtoisten kuvioiden yhdistรคmiseen |
|
() |
Kรคytetรครคn sovitetun kuvion tallentamiseen |
|
[] |
Joukko merkkejรค voidaan vรคlittรครค. Kรคytetรครคn erityisesti numeroille ja aakkosille. |
|
{} |
Kรคytetรครคn kertomaan, kuinka monta kertaa ottelu voidaan suorittaa. |
|
^ |
Merkkijonon alku |
|
$ |
Merkkijonon loppu |
|
\w |
Kรคytetรครคn vastaamaan yksittรคistรค merkkiรค tai sanaa, joka voi olla aakkosnumeerinen, mukaan lukien "_" |
|
\W |
Vastaa mitรค tahansa muuta kuin aakkosnumeerista |
|
\s |
Kรคytetรครคn vastaamaan vรคlilyรถntejรค |
|
\S |
Vastaa mitรค tahansa muuta kuin vรคlilyรถntiรค |
|
\d |
Vastaa numeroita. Ei desimaaliarvoja ja negatiivisia arvoja |
|
\D |
Yhdistรค mitรค tahansa muuta kuin numeroita. |
|
\t |
Yhdistรค vรคlilehtitila |
|
\n |
Vastaa rivinvaihtoa |
Yllรค olevat merkit ovat joukko merkkejรค, joita voidaan kรคyttรครค kuvioiden sovituksen aikana.
Katsotaanpa muutamia esimerkkejรค.
Tarkastellaan tilannetta, jossa kรคyttรคjรค syรถttรครค jonkin verran komentosarjan suorittamisen aikana, ja haluamme tarkistaa, syรถttikรถ kรคyttรคjรค jonkin nimen syรถtteeksi vai ei. Meidรคn on kirjoitettava sรครคnnรถllinen lausekkeen syntaksi poimiaksemme nimesi ja tulostaaksemme sen.
my $userinput="Guru99 Rocks";
if($userinput=~m/.*(Guru99).*/)
{
print "Found Pattern";
}
else
{
print "unable to find the pattern";
}
lรคhtรถ:
Lรถytyi kuvio
Tรคssรค olemme kirjoittaneet sรครคnnรถllisen lausekkeen muodossa /.*(Guru99).*/.* vastaa kaikki merkkijonon merkit. A '.' perlissรค regex-osuma viittaa mihin tahansa merkkiin, mukaan lukien vรคlilyรถnti.
Katsotaanpa, kuinka tarkalleen voimme rakentaa Regexin.
Harkitse esimerkkiรค useiden sanojen ja numeroiden merkkijonosta ja erikoissymboleista, kuten "Hei kaikki, tรคmรค on minun numeroni: +91-99298373639";
Regex : /^\w+\s\w+\s\w+\s\w+\s\w+\s\w+\:\+\d+\-\d+/i
Sanavรคli sana vรคlilyรถnti sanavรคli sana vรคlilyรถnti sana vรคlilyรถnti sana vรคlilyรถnti erikoismerkki : vรคlilyรถnti erikoismerkki+numerot erikoismerkki โnumerot.
Perl-ottelu OperaTors
Tรคsmรคysoperaattoreita kรคytetรครคn vastaamaan merkkijonoa jossakin lauseessa tai muuttujassa.
my $var="Hello this is perl";
if($var=~m/perl/)
{
print "true";
}
else
{
print "False";
}
lรคhtรถ:
totta
Tรคmรค pieni koodi tulostaa 'true', koska perl-mallin vastaavuus identifioi muuttujan merkkijonon. Periaatteessa Perl etsii //-tekstiรค koko merkkijonosta, vaikka se lรถytรคisikin yhdestรค paikasta, se palauttaa arvon "true". Kuvio voi olla missรค tahansa muuttujan kohdassa. Voimme yrittรครค korvata =~:llรค !~ nรคhdรคksemme eron nรคiden kahden operaattorin vรคlillรค.
Perlin vaihto OperaTor
Tรคtรค operaattoria voidaan kรคyttรครค minkรค tahansa merkin etsimiseen ja korvaamiseen joko tyhjรคllรค tai jollain muulla merkillรค.
my $a="Hello how are you"; $a=~s/hello/cello/gi; print $a;
lรคhtรถ:
sello kuinka voit
Huomautus: Voimme itse asiassa kรคyttรครค mitรค tahansa mallia vastaavaa merkkijonoa, kuten teimme aiemmin myรถs tรคssรค korvausoperaattorissa. Tรคssรค kรคytimme 'gi', g-globally, i-ignore kirjainkoko.
Perl-kรครคnnรถs OperaTor
Tรคmรค on samanlainen kuin Korvaus, mutta se ei kรคytรค perl-sรครคnnรถllisiรค lausekkeita, vaan voimme vรคlittรครค suoraan arvon tai sanan, jonka haluamme korvata.
my $a="Hello how are you"; $a=~tr/hello/cello/; print $a;
lรคhtรถ:
Hei lehmรค sinรค olet
Perl-tiedoston I/O
Perl on suunniteltu kรคsittelemรครคn tiedostoja ja I/O-toimintoja tehokkaasti. Perlin tรคrkein etu on tiedostojen jรคsentรคminen ja tiedostojen kรคsittely. Perlissรค tiedostojen kรคsittelyssรค kรคytetรครคn monia sisรครคnrakennettuja toimintoja ja operaattoreita.
Periaatteessa Perlillรค suoritettavat tiedostotoiminnot tehdรครคn FILEHANDLE:lla. Meidรคn on mรครคritettรคvรค tรคmรค FILEHANDLE tiedoston avaamisen aikana joko lukemista tai kirjoittamista varten.
Tรคssรค Perl-komentosarjan opetusohjelmassa opit
Perl Avaa tiedosto
Voimme avata tiedoston Perlissรค saatavilla olevalla open()-funktiolla.
open(FILEHANDLE, "filename or complete path of the file");
Nyt olemme avanneet tiedoston, nyt herรครค kysymys. Onko se lukemiseen vai kirjoittamiseen?
Perl Lue tiedosto ja Perl Kirjoita tiedosto
Perlissรค on tiettyjรค tiloja, joita on kรคytettรคvรค tiedoston lukemiseen, kirjoittamiseen tai liittรคmiseen.
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");
Muutamia esimerkkejรค tiedoston lukemisesta:

Oletetaan, ettรค meillรค on perl-tiedosto, jonka nimi on tiedosto.txt ja siinรค on muutama rivi tekstiรค. Meidรคn on avattava tรคmรค tiedosto ja tulostettava se.
open(FH,"<file.txt");
while(<FH>) # Looping the file contents using the FH as a filehandle.
{
print "$_";
}
close FH;
or
open(FH,"<file.txt");
my @content=<FH>; # specifying the input of the array is FH.
foreach(@content)
{
print "$_";
}
close FH;
Tรคmรค tulostaa tiedoston sisรคllรถn tulostusnรคytรถlle.
Nyt kirjoitamme ohjelman tietojen luomiseksi ja kirjoittamiseksi perl-tiedostoon.

open(FH,">test.txt"); my $var=<>; print FH $var; close FH;
Tรคmรค kirjoittaa syรถtteen ajon aikana ja luo tiedoston test.txt, jossa on syรถte.
Yllรค oleva tapa yrittรครค aina luoda tiedoston nimeltรค testi.txt ja kirjoittaa syรถtteen tiedostoon; kirjoitamme saman tiedoston liittรคmiseksi.

open(FH,">>test.txt"); my $var=<>; print FH $var; close FH;
| Tilat | Tuotetiedot |
|---|---|
|
< |
Lue |
|
+< |
Lukee ja kirjoittaa |
|
> |
Luo, kirjoittaa ja katkaisee |
|
+> |
Lue, kirjoita, luo ja katkaise |
|
>> |
Kirjoittaa, liittรครค ja luo |
|
+>> |
Lue, kirjoita, liitรค ja luo |
Nyt meidรคn tรคytyy nรคhdรค, kuinka lukea, kirjoittaa ja liittรครค tiedostoja perusesimerkkien avulla.
Nรคemme vielรค muutamia esimerkkejรค ja muita toimintoja, jotka auttavat ymmรคrtรคmรครคn enemmรคn tiedostoja.
Perl Kerro
Tรคmรค menetelmรค palauttaa FILEHANDLER:n nykyisen sijainnin tavuina, jos muuten mรครคritetรครคn, se pitรครค viimeisenรค rivinรค sijaintina.
open(FH, "test.pl");
while(<FH>)
{
$a=tell FH;
print "$a";
}
Perl Seek
Hakutoiminto on samanlainen kuin fseek-jรคrjestelmรคkutsu. Tรคtรค menetelmรครค kรคytetรครคn tiedoston osoittimen sijoittamiseen tiettyyn paikkaan mรครคrittรคmรคllรค tavut, joita seuraa joko tiedostoosoittimen alku tai tiedostoosoittimen loppu.
seek FH, bytes, WHENCE;
WHENCE on aloitustiedoston osoittimen sijainti. Nolla asettaa sen tiedoston alusta.
Esimerkki: Anna input.txt sisรคltรครค tietoja, kuten "Hei, tรคmรค on minun maailmani".
open FH, '+<','input.txt'; seek FH, 5, 0; # This will start reading data after 5 bytes. $/ = undef; $out = <FH>; print $out; close FH;
lรคhtรถ:
tรคmรค on minun maailmani
Perl Unlink
Linkin poistamista kรคytetรครคn tiedoston poistamiseen.
unlink("filename or complete file path");
Hakemistojen kรคsittely:
Voimme myรถs kรคsitellรค hakemistoja, joiden kautta voimme kรคsitellรค useita tiedostoja.
katsotaan kuinka avataan hakemisto. Voimme kรคyttรครค opendir- ja readdir-menetelmiรค.
opendir(DIR,"C:\\Program Files\\"); #DIR is the directory handler.
while(readdir(DIR)) # loop through the output of readdir to print the directory contents.
{
print "$_\n";
}
closedir(DIR); #used to close the directory handler.
or
opendir(DIR,"C:\\Program Files\\");
@content=readdir(DIR);
foreach(@content)
{
print "$_\n";
}
closedir(DIR);
Tรคmรค tulostaa kaikki kyseisessรค hakemistossa olevat tiedostot.
Perl-tiedostotestit ja niiden merkitys
|
-r |
Tarkistaa, voiko nykyinen kรคyttรคjรค/ryhmรค lukea tiedostoa/hakemistoa |
|
-w |
Tarkistaa, voiko nykyinen kรคyttรคjรค/ryhmรค kirjoittaa tiedostoon/hakemistoon |
|
-x |
Tarkistaa, onko nykyinen kรคyttรคjรค/ryhmรค suoritettava tiedosto/hakemisto |
|
-o |
Tarkistaa, omistaako tiedosto/hakemisto nykyinen kรคyttรคjรค |
|
-R |
Tarkistaa, voiko tรคmรค oikea kรคyttรคjรค/ryhmรค lukea tiedostoa/hakemistoa |
|
-W |
Tarkistaa, voiko tรคmรค oikea kรคyttรคjรค/ryhmรค kirjoittaa tiedostoon/hakemistoon |
|
-X |
Tarkistaaksesi, voiko tรคmรค oikea kรคyttรคjรค/ryhmรค suorittaa tiedostoa/hakemistoa |
|
-O |
Tarkistaaksesi, omistaako tiedosto/hakemisto tรคmรค oikea kรคyttรคjรค |
|
-e |
Tarkistaa, onko tiedoston/hakemiston nimi olemassa |
|
-z |
Tarkistaaksesi, onko tiedosto olemassa ja onko sen koko nolla (aina epรคtosi hakemistoille) |
|
-f |
Tarkistaaksesi, onko Entry tavallinen tiedosto |
|
-d |
Tarkistaaksesi, onko Entry hakemisto |
|
-l |
Tarkistaaksesi, onko Entry symbolinen linkki |
|
-S |
Tarkistaaksesi, onko Entry pistorasia |
|
-p |
Tarkistaa, onko Entry nimetty putki ("FIFO") |
|
-b |
Tarkistaaksesi, onko Entry lohkon erikoistiedosto (kuten asennettava levy) |
|
-c |
Tarkistaaksesi, onko Entry merkkien erikoistiedosto (kuten I/O-laite) |
|
-u |
Tarkistaaksesi, onko tiedosto tai hakemisto asetettu |
|
-g |
Tarkistaaksesi, onko tiedosto tai hakemisto asetettugid |
|
-k |
Tarkistaa, onko tiedostossa tai hakemistossa tarrabitti asetettu |
|
-t |
Annettu tiedostokahva on TTY (isatty()-jรคrjestelmรคfunktion mukaan tiedostonimiรค ei voi testata tรคllรค testillรค) |
|
-T |
Tarkistaaksesi, nรคyttรครคkรถ tiedosto "tekstitiedostolta". |
|
-B |
Tarkistaaksesi, nรคyttรครคkรถ tiedosto "binรครคritiedostolta". |
|
-M |
Tarkistaaksesi tiedoston muokkausiรคn (pรคivinรค mitattuna). |
|
-A |
Voit tarkistaa tiedoston kรคyttรถiรคn (pรคivinรค mitattuna). |
|
-C |
Tarkistaaksesi tiedoston Inode-muokkauksen iรคn (pรคivinรค mitattuna). |
Perl-alirutiini
Mikรค on aliohjelma?
Aliohjelmat ovat samanlaisia โโkuin muiden ohjelmointikielten toiminnot. Olemme jo kรคyttรคneet joitain sisรครคnrakennettuja toimintoja, kuten print, chomp, chop jne. Voimme kirjoittaa omia aliohjelmiamme Perlissรค. Nรคmรค aliohjelmat voidaan kirjoittaa minne tahansa ohjelmaan; aliohjelmat kannattaa sijoittaa joko koodin alkuun tai loppuun.

Aliohjelmat Esimerkki
sub subroutine_name
{
Statementsโฆ; # this is how typical subroutines look like.
}
Nyt kun tiedรคmme kuinka kirjoittaa aliohjelma, miten pรครคsemme siihen kรคsiksi?
Meidรคn on kรคytettรคvรค tai kutsuttava aliohjelmaa kรคyttรคmรคllรค aliohjelman nimeรค, jonka etuliitteenรค on &-symboli.
sub display
{
print "this is a subroutine";
}
display(); # This is how we call a subroutine
Perl-parametrien ja Perl-argumenttien vรคlittรคminen
Aliohjelmat tai perl-funktio on kirjoitettu sijoittamaan uudelleen kรคytettรคvรค koodi siihen. Suurin osa uudelleen kรคytettรคvรคstรค koodista vaatii parametrien vรคlittรคmisen aliohjelmalle. Tรครคllรค opimme kuinka voimme vรคlittรครค argumentteja aliohjelmalle.
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.
lรคhtรถ:
3 on vรคlitetty arvo
@_ on erityinen taulukkomuuttuja, joka tallentaa aliohjelmille vรคlitetyt argumentit.
Perl Shift
Voimme myรถs kรคyttรครค 'shift'-avainsanaa, joka siirtรครค parametrin kerrallaan muuttujaan tai $_[0],$_[1]โฆ joka on @_-taulukon yksittรคinen elementti
sub display
{
my $var=shift;
print "$var is passed";
}
display("hello");
lรคhtรถ:
tervehdys on ohitettu
Alirutiineja kรคytetรครคn tyypillisesti olio-ohjelmoinnissa ja myรถs paikoissa, joissa voi olla enemmรคn uudelleenkรคytettรคvรครค koodia sijoitettavana.
Aliohjelmien pรครคtoiminto on tehdรค jokin tehtรคvรค ja palauttaa uudelleenkรคytettรคvรคn koodin tulos.

Voimme palauttaa arvon aliohjelmasta kรคyttรคmรคllรค return-avainsanaa.
sub add
{
my $a=shift;
my $b=shift;
return($a+$b);
}
my $result=add(5,6);
print $result;
lรคhtรถ:
11
$tulos sisรคltรครค lisรคttyjen $a:n ja $b:n arvon.
Voimme myรถs siirtรครค tiivisteet ja taulukon suoraan aliohjelmaan.
sub hash
{
my %hash=@_;
print %hash;
}
%value= ( 1=>'a', 2=>'b');
&hash(%value);
lรคhtรถ:
1a2b
Voimme myรถs palauttaa hashin tai taulukon.
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;
lรคhtรถ:
Alirutiinin sisรคllรค2b1aAlirutiinin kutsun2b1a jรคlkeen
Perl-muoto
Perlillรค on mekanismi, jonka avulla voimme luoda raportteja. Tรคmรคn ominaisuuden avulla voimme tehdรค raportteja juuri haluamallamme tavalla tulostettaessa Tulostusnรคytรถssรค tai tiedostossa. Yksinkertainen muoto voidaan kirjoittaa Perlissรค saatavilla olevilla printf- tai sprintf-funktioilla.
printf "%05d\n", 30;
Tรคmรค sisรคltรครค alkunollat โโluvun 30 eteen, jolloin numeroiden kokonaismรครคrรค lasketaan viiteen. Samaa voidaan kรคyttรครค sprintf:ssรค.
sprintf "%05d\n", 30; # This will print the same as printf.
Printf:n ja sprintf:n avulla voimme saada useimmat Perl-muodot. Raporttien tapauksessa se on vaikea toteuttaa.
================================================== =========================
Nimi Osoite Ikรค Puhelin
================================================== =========================
Krishna Chennai 24 929309242
Shruthi Chennai 24 929309232
Yllรค oleva on esimerkkiraportit, jotka meidรคn on tulostettava samalla tavalla Perlissรค. Tรคmรค voidaan saavuttaa kรคyttรคmรคllรค perl printf ja perl sprintf. Se voidaan toteuttaa tehokkaasti kรคyttรคmรคllรค muotoa.
Muoto voidaan ilmoittaa alla olevalla tavalla.
format FORMATNAME=FORMATLIST.
Tรคssรค kรคytรคmme tiettyรค kirjoitusmenetelmรครค tietojen tulostamiseksi tulostusnรคytรถlle tai tiedostoon.
| Symboli | Tuotetiedot |
|---|---|
|
@ |
Kรคytetรครคn edustamaan kentรคn haltijan alkua |
|
> |
Tekstin tasaus oikealle |
|
< |
Tekstin tasaus vasemmalle |
|
| |
Keskitasaus |
|
# |
Numero, jos useita # on annettu. Oletetaan kommentiksi, jos yksittรคinen # on annettu |
|
. |
Desimaalipiste |
|
^ |
Kentรคnpitimen alkua voidaan kรคyttรครค myรถs moniriviselle ja myรถs rivityksellรค |
|
~ |
Rivin tulee olla tyhjรค, jos muuttuja on tyhjรค |
|
@* |
Useita rivejรค. |
($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
.
Suorita koodi nรคhdรคksesi tulosteen.
Kรคytรคmme @-symbolia mรครคrittรคmรครคn kentรคn haltijan tai merkkijonon alkua, jokainen merkki "<".
Kรคytรคmme STDOUT-tulostusta vakiotulosteen tulostamiseen. Voimme muuttaa tรคmรคn tiedostokรคsittelijรคksi, jota kรคytรคmme tietojen kirjoittamiseen tiedostoon.
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
Voimme korvata '<':n '>' tai '|' muuttaaksesi tekstin kohdistusta. STDOUT_TOP:a kรคytetรครคn muotoilemaan muodon otsikkoa.Voimme kรคyttรครค samaa myรถs tiedostonkรคsittelyohjelmassa kรคyttรคmรคllรค FH_TOP:ia (FH on tiedostonkรคsittely). Tรคmรค tulostaa muodon kรคsiteltรคvรครคn tiedostoon pรครคllรค.
Perl-koodausstandardit
Jokaisella ohjelmoijalla on oma kรคsityksensรค koodin kirjoittamisesta tiettyjรค standardeja kรคyttรคen; Nรคiden standardien tulee olla tarpeeksi tuttuja, jotta muut ohjelmoijat voivat ymmรคrtรครค ja tukea koodia oikein.
Koodausstandardit Perlissรค
Koodin kirjoittaminen on yksinkertaista ja helppoa. Ongelma syntyy, kun sitรค on yllรคpidettรคvรค myรถhemmissรค vaiheissa. Asianmukaisia โโohjeita ja koodausstandardeja on noudatettava koodia kirjoitettaessa. Perl mรครคrittelee myรถs tietyt standardit, joista on hyรถtyรค ohjelmoijille koodin kirjoittamisessa. On suositeltavaa ladata 'strict' ja 'warnings module' koodia kirjoitettaessa. Jokaisella nรคistรค moduuleista on oma merkityksensรค. Strict saa meidรคt ilmoittamaan muuttujan ennen kรคyttรถรค ja myรถs kertomaan, onko koodissasi paljaita sanoja. Varoitukset moduulia voidaan vaihtoehtoisesti kรคyttรครค vรคlittรคmรคllรค '-w' vaihtoehto Perl-tulkkiin shebangissa. Varoitukset tulostuvat tulostusnรคytรถlle.
#!/usr/bin/perl โw
Alla on muutamia luetteloita standardeista.
- Kรคytรค 'tiukkaa' ja 'varoitukset' -moduulia.
- Poista muuttuja, joka ei ole kรคytรถssรค.
- Muuttujien nimien tulee olla muiden kรคyttรคjien ymmรคrrettรคviรค. Esim: $nimi, @fileData jne.
- Skriptiรค koodattaessa tarvitaan dokumentaatio.
- รlรค koodaa arvoja, vaan yritรค hakea ne dynaamisesti tai pyydรค kรคyttรคjรครค syรถttรคmรครคn ajon aikana. (Tiedostopolku, Tiedostonimet).
- Maksimoi koodin uudelleenkรคyttรถ. Yritรค laittaa uudelleen kรคytettรคvรค koodi aliohjelmiin.
- Aliohjelmille tulee antaa merkitykselliset nimet.
- Aliohjelmat on kirjoitettava asianmukaisilla kommenteilla ja dokumentaatiolla.
- Alusta aina muuttujat.
- Tarkista aina jรคrjestelmรคpuheluiden paluukoodit. Tiedoston avaaminen voi tapahtua tai ei, palautuskoodin saaminen tรคhรคn nรคyttรครค virhetilan, jos tiedostoa ei ole olemassa.
Esim: avoin (FH,
- Aliohjelman tulee aina palauttaa arvo.
- Avaa kihara samassa linjassa.
- Yksirivinen BLOCK voidaan sijoittaa yhdelle riville kiharalla.
- Kรคytรค tarroja silmukan aikana, silmukasta olisi helppo poistua aina, kun se on tarpeen.
- Kรคytรค alaviivaa, kun pitkiรค sanoja kirjoitetaan muuttujan nimellรค tai aliohjelmalla.
- Yritรค kรคyttรครค yksinkertaista regexiรค koodattaessa.
Tรคydellinen esimerkki koodausstandardeista:
#######################################################################
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-virheiden kรคsittely
Mikรค on poikkeus?
Poikkeus on tapahtuma, joka tapahtuu ohjelman suorittamisen aikana ja joka keskeyttรครค tai lopettaa ohjelman.
Virheiden kรคsittely
Virheenkรคsittely on ongelma, josta jokaisen ohjelmoijan on huolehdittava ohjelmoinnin aikana. Perl tarjoaa myรถs virheenkรคsittelytekniikoita, joiden avulla voimme saada virheen ansaan ja kรคsitellรค niitรค vastaavasti.
Virheiden kรคsittely Perlissรค
On monia tapoja tarkistaa ohjelman virheitรค. Meidรคn on tutkittava kรคyttรคmรคmme koodin funktion palautuskoodit. Jos pystymme kรคsittelemรครคn nรคitรค palautuskoodeja oikein, suurin osa virheiden kรคsittelystรค voidaan saavuttaa.
Mitรค palautetaan jรคrjestelmรคkutsujen tapauksessa?
Jรคrjestelmรคkutsujen tapauksessa palautustila tallennetaan kahteen erikoismuuttujaan $? Ja $!
$! โ Tรคmรค havaitsee virheilmoitukseen liittyvรคn virhenumeron tai virhenumeron.
$? โ Tรคmรค sรคilyttรครค palautustilan system()-funktion.
Perl- tai Logical-operaattorilla
Voimme kรคyttรครค loogista tai operaattoria virheenkรคsittelyyn jรคrjestelmรคkutsuja kรคytettรคessรค.
ex:
open(FH,"<test.txt");
Tรคmรค avaa tiedoston lukutilassa, jos tiedosto on olemassa.
Entรค jos tiedosto puuttuu?
open(FH,"<test.txt") or die("File not exists $!"); # This will perl exit the program if the file not exists.
open(FH,"<test.txt") or warn ("File not exists $!"); # This will print a warning message on STDERR
Perl Eval
Eval-toiminto voi kรคsitellรค vakavia virheitรค, kรครคnnรถsaikavirheitรค, ajonaikaisia โโvirheitรค ja niitรค virheitรค, jotka pรครคttรคvรคt koodisi jossain vaiheessa.
Perl Eval -funktiolla voi olla koodilohko tai lauseke. Evals pitรครค kaikkea siihen sijoitettua merkkijonona.
Harkitse tilannetta, jossa kutsutaan aliohjelmaa, jota ei ole mรครคritelty skriptissรค. Tรคssรค tilanteessa komentosarja pรครคttyy sanomalla "mรครคrittelemรคtรถn aliohjelma &XYZ, tรคmรค virhe voidaan kรคsitellรค eval-funktiossa.
Evals-lohkolla on monia kรคyttรถtarkoituksia; yksi tรคllainen kรคyttรถ on, kun haluamme ladata kรคyttรถjรคrjestelmรคkohtaisen moduulin ajon aikana.
Esimerkki: Nollalla jakaminen aiheuttaa vakavan virheen; Tรคmรคn kรคsittelemiseksi voimme sijoittaa koodin evals-lohkoon.
$a=5;
$b=0;
eval
{
'$result=$a/$b';
}
if($@)
{
print "$@"; # All the error codes returned by evals will get stored in $@.
}
lรคhtรถ:
syntaksivirhe C:\Users\XYZ\Text.pl rivillรค 8, lรคhellรค ")
{โ
Tiedoston C:\Users\XYZ\Text.pl suoritus keskeytettiin kรครคnnรถsvirheiden vuoksi.
Esimerkki: eval kรคyttรคen perl die -lausetta.
sub test
{
die "Dieing in sub test \n";
}
eval
{
test();
};
print "Caught : $@\n";
lรคhtรถ:
Kiinni: kuolee osatestissรค
Kรคyttรคmรคllรค Perl Try
Perl ei tue try, catch ja lopuksi koodilohkoja kuten muut ohjelmointikielet. Voimme silti kรคyttรครค niitรค lataamalla ulkoisen Perl-moduulin.
kรคytรค Kokeile::Tiny;
Tรคmรคn avulla voimme sijoittaa koodisi try-lohkoon ja havaita virheen varoituslohkossa.
Eval:n Try::Tiny kรคyttรครค $_:n sijasta $_.
# kรคsittele virheitรค catch-kรคsittelijรคllรค
try
{
die "Die now";
}
catch
{
warn "caught error: $_"; # not $@
};
Lopuksi kรคytรถssรค.
my $y;
try
{
die 'foo'
}
finally
{
$y = 'bar'
};
try
{
die 'Die now'
}
catch
{
warn "Returned from die: $_"
}
finally
{
$y = 'gone'
};
lรคhtรถ:
foo osoitteessa C:\Users\XYZ\Text.pl rivillรค 4.
Voimme kรคyttรครค try, catch ja lopulta tรคllรค tavalla.
kokeile { # lausetta }
catch {# lausunto }
lopuksi { # lause };
Or
try
{
# statement
}
finally
{
# statement
};
lรคhtรถ:
Or
try
{
# statement
}
finally
{
# statement
}
catch
{
# statement
};
lรคhtรถ:
Perl Socket -ohjelmointi
Mikรค on pistorasia?

Socket on vรคline, jonka kautta kaksi tietokonetta voivat olla vuorovaikutuksessa verkossa kรคyttรคmรคllรค verkko-osoitetta ja portteja.
Oletetaan, ettรค A (palvelin) ja B (asiakas) ovat kaksi jรคrjestelmรครค, joiden on oltava vuorovaikutuksessa toistensa kanssa Socketsilla joidenkin ohjelmien suorittamiseen.
Tรคmรคn toteuttamiseksi meidรคn on luotava pistokkeet sekรค A:lle (palvelin) ettรค B:lle (asiakas), A on vastaanottavassa tilassa ja B on lรคhettรคvรคssรค tilassa.
A (palvelin):
Tรคssรค palvelin haluaa vastaanottaa yhteyden B:ltรค (asiakas) ja suorittaa joitakin tehtรคviรค ja lรคhettรครค tuloksen takaisin B:lle (asiakas). Kun suoritamme koodin, A:n kรคyttรถjรคrjestelmรค yrittรครค luoda socketin ja sitoa yhden portin siihen pistokkeeseen. Sitten se kuuntelee lรคhettรคjรครค, joka on B.
B (asiakas).
Tรคssรค asiakas haluaa lรคhettรครค jonkin ohjelman jรคrjestelmรคstรครคn A:lle (palvelimelle) kรคsittelyรค varten. Kun suoritamme koodin, B:n kรคyttรถjรคrjestelmรค yrittรครค luoda pistorasian kommunikointia varten A:n (palvelimen) kanssa, B:n on mรครคritettรคvรค A:n IP-osoite ja porttinumero, johon B haluaa muodostaa yhteyden.
Jos tรคmรค menee hyvin, molemmat jรคrjestelmรคt ovat vuorovaikutuksessa tietojen vaihtamiseksi yhden portin kautta. Perl tukee myรถs socket-ohjelmointia.
Perlissรค on natiivi API, jonka kautta socketit voidaan toteuttaa. Sen helpottamiseksi on olemassa monia CPAN-moduuleja, joilla kirjoitamme socket-ohjelmia.
Palvelimen toiminta:
- Luo Socket
- Sidosliitin osoitteella ja portilla
- Kuuntele kyseisen portin osoitteen liitรคntรครค
- Hyvรคksy asiakasyhteydet, jotka yrittรคvรคt muodostaa yhteyden kรคyttรคmรคllรค palvelimen porttia ja IP-osoitetta
- Suorita toimenpiteet
Asiakas OperaTIONS:
- Luo Socket
- Yhdistรค palvelimeen kรคyttรคmรคllรค sen porttiosoitetta
- Suorita toimenpiteet

socket.io
Tรคmรค on yksi moduuli socket-ohjelmointiin, joka perustuu olio-ohjelmointiin. Tรคmรค moduuli ei tue verkoissa kรคytettyรค INET-verkkotyyppiรค.
IO::Socket::INET:
Tรคmรค moduuli tukee INET-toimialuetta ja on rakennettu IO::Socketsiin. Kaikki IO::Socketsissa kรคytettรคvissรค olevat menetelmรคt periytyvรคt INET-moduulissa.
TCP-protokollaa kรคyttรคvรค asiakas ja palvelin:
TCP on yhteyssuuntautunut protokolla; kรคytรคmme tรคtรค protokollaa socket-ohjelmointiin.
Ennen kuin jatkat, katsotaan kuinka voimme luoda objektin IO::Socket::INET-moduulille ja luoda socketin.
$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";
Uusi menetelmรค IO::Socket::INET-moduulissa hyvรคksyy hajautusarvon syรถteparametriksi aliohjelmaan. Tรคmรค hash on ennalta mรครคritetty, ja meidรคn on vain annettava arvot avaimille, joita haluamme kรคyttรครค. Tรคssรค on luettelo tรคmรคn hashin kรคyttรคmistรค avaimista.
|
PeerAddr |
Etรคisรคntรคosoite |
|
PeerHost |
Synonyymi sanalle PeerAddr |
|
PeerPort |
Etรคportti tai -palvelu |
|
LocalAddr |
Paikallisen isรคnnรคn sidososoite |
|
localhost |
Synonyymi sanalle LocalAddr |
|
LocalPort |
Paikallisen isรคnnรคn sidosportti |
|
Proto |
Protokollan nimi (tai numero) |
|
Tyyppi |
socket tyyppi |
|
Kuuntele |
Jonon koko kuuntelua varten |
|
ReuseAddr |
Aseta SO_REUSEADDR ennen sitomista |
|
Kรคyttรครค uudelleen |
Aseta SO_REUSEADDR ennen sitomista |
|
ReusePort |
Aseta SO_REUSEPORT ennen sitomista |
|
Lรคhettรครค |
Aseta SO_BROADCAST ennen sitomista |
|
Timeout |
Aikakatkaisuarvo eri toiminnoille |
|
MultiHomed |
Kokeile kaikkia monikotiisten isรคntien osoitteita |
|
Esto |
Selvitรค, onko yhteys estotilassa |
Server.pl
use IO::Socket;
use strict;
use warnings;
my $socket = new IO::Socket::INET (
LocalHost => 'localhost',
LocalPort => '45655',
Proto => 'tcp',
Listen => 1,
Reuse => 1,
);
die "Could not create socket: $!n" unless $socket;
print "Waiting for the client to send datan";
my $new_socket = $socket->accept();
while(<$new_socket>) {
print $_;
}
close($socket);
Asiakas.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);
Huomautus:
Socket-ohjelmoinnissa meidรคn on suoritettava Server.pl ensin ja sitten client.pl yksitellen eri komentokehotteissa, jos kรคytรคmme paikallista isรคntรคkonetta.
Mitรค ovat Perl-moduulit ja -paketit
Moduulit ja paketit liittyvรคt lรคheisesti toisiinsa ja ovat riippumattomia. Paketti: Perl-paketti tunnetaan myรถs nimellรค nimiavaruus, ja siinรค on kaikki ainutlaatuiset muuttujat, kuten tiivisteet, taulukot, skalaarit ja aliohjelmat. Moduuli: Moduuli on kokoelma uudelleenkรคytettรคvรครค koodia, johon kirjoitamme alirutiineja. Nรคmรค moduulit voidaan ladata Perl-ohjelmiin, jotta voidaan hyรถdyntรครค niissรค kirjoitettuja aliohjelmia.
Mitรค Perl-moduulit ovat?
Vakiomoduulit asennetaan Perlin asennuksen aikana mihin tahansa jรคrjestelmรครคn. CPAN: Kattava Perl Archive Network โ Perl-moduulien maailmanlaajuinen arkisto. Omat mukautetut Perl-moduulimme, jotka voimme kirjoittaa itse. Pohjimmiltaan moduuli, joka ladataan mihin tahansa komentosarjaan, vie kaikki globaalit muuttujat ja aliohjelmat. Nรคmรค aliohjelmat voivat kutsua suoraan ikรครคn kuin ne olisi ilmoitettu itse skriptissรค. Perl-moduulit voidaan kirjoittaa .pm-tunnisteella tiedostonimellรค Esim: Foo.pm. Moduuli voidaan kirjoittaa kรคyttรคmรคllรค "paketti Foo" ohjelman alussa.
Perl-perusmoduuli:
#!/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;
Ei lรคhtรถรค
Kรคyttรครคksemme tรคtรค Perl-moduulia, meidรคn on sijoitettava se tรคllรค hetkellรค toimivaan hakemistoon.
Voimme ladata Perl-moduulin vaatimalla tai kรคyttรคmรคllรค missรค tahansa koodissa. Suurin ero vaatimuksen ja kรคytรถn vรคlillรค on, ettรค vaaditaan ladattu moduuli ajon aikana ja kรคytรค kuormia kรครคnnรถsajan aikana.
#!/usr/bin/perl require Arithmetic; print Arithmetic::add(5,6); print Arithmetic:: subtract (5,6);
Tรคssรค, yllรค olevassa esimerkissรค, kรคytรคmme aliohjelmia kรคyttรคmรคllรค tรคysin pรคtevรครค moduulinimeรค.
Voimme kรคyttรครค pakettia myรถs kรคyttรคmรคllรค "kรคytรค aritmetiikkaa".
Viejรค:
Tรคssรค moduulissa on oletusarvoinen tuontimenetelmien toiminto.
#!/usr/bin/perl
package Arithmetic;
require Exporter;
@ISA= qw(Exporter); # This is basically for implementing inheritance.
@EXPORT = qw(add);
@EXPORT_OK = qw(subtract);
sub add
{
my $a=$_[0];
my $b=$_[1];
return ($a+$b);
}
sub subtract
{
my $a=$_[0];
my $b=$_[1];
return ($a-$b);
}
1;
@EXPORT-taulukkoa voidaan kรคyttรครค siirtรคmรครคn luettelo muuttujista ja aliohjelmista, jotka oletuksena viedรครคn moduulin kutsujalle.
@EXPORT_OK-taulukon avulla voidaan vรคlittรครค luettelo muuttujista ja aliohjelmista, jotka viedรครคn pyynnรถstรค ja jotka kรคyttรคjรคn on mรครคritettรคvรค moduulia ladattaessa.
#!/usr/bin/perl use Arithmetic qw(subtract); print add(5,6); print subtract (5,6);
Oletuksena lisรคalirutiini viedรครคn. Vรคhennysmenetelmรครค ei viedรค, jos sitรค ei ole mรครคritetty moduulia ladattaessa.
Olio-ohjelmointi Perlissรค
Tรคssรค osiossa opimme luomaan Perl-oliomoduuleja. Katsotaanpa ensin, mikรค on esine? Objekti on ilmentymรค, jonka avulla voimme kรคyttรครค, muokata ja paikantaa tietoja missรค tahansa Perl-moduulissa. Tรคmรค ei ole muuta kuin olemassa olevan Perl-paketin, muuttujien ja aliohjelmien saattamista toimimaan luokan, objektien ja menetelmien tavoin suhteessa muihin ohjelmointikieliin.
Luo luokka
Osaamme jo luoda moduuleja edellisestรค aiheesta. Luokan tarkoituksena on tallentaa menetelmiรค ja muuttujia. Perl-moduulissa on alirutiineja, jotka ovat menetelmiรค. Meidรคn on kรคytettรคvรค nรคitรค muuttujia ja aliohjelmien objekteja.
Perl rakentaja
Konstruktori Perlissรค on menetelmรค, joka suorittaa ja palauttaa meille viitteen moduulin nimellรค, joka on merkitty viitteeseen. Tรคtรค kutsutaan luokan siunaukseksi. Kรคytรคmme perl-luokan siunaamiseen tiettyรค muuttujaa, joka on 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;
Uusi menetelmรค, jota kรคytetรครคn luokan rakentajana, Tรคmรค rakentaja luo meille objektin ja palaa komentosarjaan, joka kutsuu tรคtรค rakentajaa.
#!/usr/bin/perl use Arithmetic; my $obj= Arithmetic->new(); my $result= $obj->add(5,6); print "$result"; $result = $obj->subtract(6,5); print "$result";
Tรคssรค meidรคn on ymmรคrrettรคvรค, kuinka objekti luotiin. Aina kun yritรคmme luoda objektin luokalle, meidรคn on kรคytettรคvรค luokan koko nimeรค. Oletetaan, ettรค jos perl-luokka sijaitsee jossain tiedostossa lib\Math\Arithmetic.pm. Ja jos haluamme kรคyttรครค tรคtรค perl-luokkaa lib-hakemistosta, meidรคn on annettava koko polku luokkaan, kun kutsumme komentosarjaa.
kรคytรค lib::Math::Aritmetic;
my $obj = lib::Math::Arithmetic->new();
Nรคin objektin luominen Perlissรค tapahtuu.
@INC:
Kuinka Perl-skripti tietรครค, missรค kirjastomoduuli on olemassa? Perl tietรครค vain komentosarjan nykyisen hakemiston ja Perlin sisรครคnrakennetun kirjastopolun. Aina kun kรคytรคmme Perl-moduulia, joka ei sijaitse nykyisessรค hakemistossa tai Perl-kirjastopolussa, komentosarja epรคonnistuu aina. Tietoja @INC:stรค tรคmรค on taulukko, joka sisรคltรครค kaikki hakemistopolut, joista sen on etsittรคvรค Perl-moduuleja. Yritรค suorittaa tรคmรค komento ja katso, mikรค on tulos.
perl โe "print @INC"
Tรคmรค antaa jonkin verran tulosta, ja se on polku, jossa lib-moduulit ovat kรคytettรคvissรค. Aina kun kรคytรคmme uutta kirjastomoduulia, meidรคn on kerrottava Perlille, tulkille, ettรค hรคn tutkii sen sijainnin, jossa Perl-moduuli on saatavilla.
push(@INC, "PATH TO YOUR MODULE");
Tee tรคstรค ensimmรคinen koodirivi. Tรคmรค kรคskee tulkkiasi tutkimaan polkua. tai kรคyttรครค
lib Arithmetic; # List here is your Perl Module location
Perl Destructor
Objektin tuhoajaa kutsutaan oletusarvoisesti skriptin lopussa ja ennen kuin se poistuu. Tรคtรค kรคytetรครคn tuhoamaan esineesi muistista.
PERL V/s Shell Scripting
- Ohjelmointi Perlissรค ei aiheuta siirrettรคvyysongelmia, mikรค on yleistรค kรคytettรคessรค eri shelliรค komentosarjoissa.
- Virheiden kรคsittely on erittรคin helppoa Perlissรค
- Voit kirjoittaa pitkiรค ja monimutkaisia โโohjelmia Perlille helposti sen laajuuden vuoksi. Tรคmรค on toisin kuin Shell, joka ei tue nimiavaruuksia, moduuleja, objekteja, perintรถรค jne.
- Shellillรค on saatavilla vรคhemmรคn uudelleenkรคytettรคviรค kirjastoja. Ei mitรครคn verrattuna Perlin CPAN:iin
- Shell on vรคhemmรคn turvallinen. Se kutsuu ulkoisia toimintoja (komennot kuten mv, cp jne. riippuvat kรคytetystรค kuoresta). Pรคinvastoin Perl tekee hyรถdyllistรค tyรถtรค kรคyttรคessรครคn sisรคisiรค toimintoja.
Kuinka PERLiรค kรคytetรครคn automaatiotestauksessa
Perliรค kรคytetรครคn laajalti automaatiossa. Se ei ehkรค ole maailman paras ohjelmointikieli, mutta se sopii parhaiten tietyntyyppisiin tehtรคviin. Keskustellaan siitรค, missรค ja miksi Perliรค kรคytetรครคn Automaatiotestaus.
Varastoinnin testaus
Mikรค on varastointi? Tiedostoihin tallennetut tiedot.
Oletetaan, ettรค meillรค on tallennustilaa Testitapaus jossa meidรคn on kirjoitettava tiedot yhteen osioon, luettava se ja tarkistettava, ettรค tiedot on kirjoitettu oikein.
Tรคmรค voidaan tehdรค manuaalisesti, mutta voiko manuaalinen testaaja suorittaa saman 10000 XNUMX kertaa? Siitรค tulee painajainen! Tarvitsemme automaatiota
Paras tyรถkalu kaiken tallennukseen liittyvรคn automatisointiin on Perl sen tiedostojenkรคsittelytekniikoiden vuoksi, REGEX ja tehokas tiedostojen jรคsennys, joka kuluttaa vรคhiten suoritusaikaa muihin ohjelmointikieliin verrattuna.
Miksi meidรคn tรคytyy testata tallennustilaa? Ajattele suuria palvelinkeskuksia, joissa data virtaa jatkuvasti jรคrjestelmรคstรค toiseen ja jossa tallennetaan 1000 tietuetta sekunnissa. Tรคllaisen sรคilytysmekanismin kestรคvyyden testaaminen on vรคlttรคmรคtรถntรค.
Monet yritykset, kuten HP, Dell, IBM ja monet palvelinvalmistajat kรคyttรคvรคt Perliรค kรคyttรถliittymรคnรค tallennus- ja verkkoalueiden toimivuuden testaamiseen. NetApp on yksi tรคllainen yritys, joka toimii tรคysin Storagessa ja kรคyttรครค Perliรค ohjelmointikielenรค testitapausten automatisoimiseen.
Jos olet kiinnostunut Perl Automationista, olisi suositeltavaa oppia tallennus- ja verkkotoiminnoista Concepts.
Palvelimen ja verkon testaus:
Palvelimen ja verkon testaus Perlillรค
PERLiรค kรคytetรครคn laajalti palvelimen kรคytettรคvyyden ja suorituskyvyn seurantaan.
Harkitse datakeskusta, jossa on 100 isรคntรค (palvelinta). Sinun on muodostettava yhteys jokaiseen isรคntรครคn, suoritettava joitain komentoja etรคnรค. Haluat myรถs kรคynnistรครค jรคrjestelmรคn uudelleen ja tarkistaa, milloin se palaa verkkoon.
Tรคmรคn tehtรคvรคn manuaalinen suorittaminen kaikille 100 isรคnnรคlle on painajainen. Mutta voimme helposti automatisoida tรคmรคn kรคyttรคmรคllรค PERLiรค
Suunnittele vaiheet tรคmรคn yllรค olevan automatisoinnin saavuttamiseksi PERL:n avulla
- Syรถtรค tiedostosta isรคntรคtiedot, kuten (IP, kรคyttรคjรคtunnus ja salasana).
- Kรคytรค Net::SSH2:ta muodostaaksesi yhteyden jokaiseen jรคrjestelmรครคn ja perustaaksesi kanavan komentojen suorittamista varten.
- Suorita vaaditut komentosarjat, esim.: ls, dir, ifconfig, ps jne.
- Kรคynnistรค jรคrjestelmรค uudelleen.
- Odota 10 minuuttia, kunnes jรคrjestelmรค tulee nรคkyviin.
- Pingta jรคrjestelmรครค Net::Ping-moduulilla ja tulosta tila.
Koodaamme yllรค olevan skenaarion.
Otetaan tiedosto nimeltรค Input.txt, joka tallentaa tรคydelliset tiedot kaikista isรคnnistรค, joihin meidรคn on muodostettava yhteys ja suoritettava komento.
Input.txt
192.168.1.2 pรครคkรคyttรคjรคn salasana
192.168.1.3 pรครคkรคyttรคjรคn salasana
192.168.1.4 juurijuuri123
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";
}
}
Verkkotestaus
Perl ei rajoitu vain tallennus- ja verkkotestaukseen. Voimme myรถs suorittaa web-pohjaisia โโtestejรค PERL:n avulla. WWW-Mekanisoi on yksi moduuli, jota kรคytetรครคn verkkotestaus. Pohjimmiltaan se ei kรคynnistรค selainta web-sovellusten toimivuuden testaamiseksi, vaan se kรคyttรครค html-sivujen lรคhdekoodia.
Voimme myรถs suorittaa selainpohjaisia โโtestejรค kรคyttรคmรคllรค Selenium IDE, RC, Web-ohjain. Perl on tuettu Selenium.
\n"; #tรคmรค sรคilyttรครค jรคljellรค olevan merkkijonon kuvion sovituksen jรคlkeen.
Tulosta "





