Perl tutorial
Hvad er Perl?
Perl er et fortolket, dynamisk programmeringssprog pรฅ hรธjt niveau, generelt til formรฅl. Perl er et udtryk, der stรฅr for "Praktisk udvinding og rapporteringssprog", selvom der ikke er et akronym for Perl. Det blev introduceret af Larry Wall i 1987. Perl-sproget var specielt designet til tekstredigering. Men nu er det meget brugt til en rรฆkke formรฅl, herunder Linux-systemadministration, netvรฆrksprogrammering, webudvikling osv.
Lad os sige det pรฅ en enkel mรฅde. Mens computere kun forstรฅr 0'er og 1'er (binรฆrt sprog/maskinsprog/ [lavt sprog]), er det meget svรฆrt at programmere i et binรฆrt sprog for os mennesker. Perl er et programmeringssprog, som bruger naturlige sprogelementer, ord, der bruges i almindeligt engelsk sprog, og som derfor er lettere at forstรฅ af mennesker [sprog pรฅ hรธjt niveau]. Nu er der et problem; computere kan ikke forstรฅ sprog pรฅ hรธjt niveau, som vi mennesker sagtens kan forstรฅ. Til det har vi brug for noget, der kan oversรฆtte sprog pรฅ hรธjt niveau til sprog pรฅ lavt niveau. Her kommer tolk til vores hjรฆlp. Tolken er et stykke software, som konverterer programmet skrevet pรฅ hรธjniveausproget til lavniveausprog, sรฅ computeren kan forstรฅ og udfรธre instruktionerne skrevet i programmet. Derfor er Perl en fortolket programmeringssprog.
Hvor bruges Perl?
Kraften i Perl scriptsprog kan implementeres pรฅ mange omrรฅder. Den mest populรฆre brug af Perl er i webudvikling. Perl bruges ogsรฅ til at automatisere mange opgaver pรฅ webservere, og andre administrationsjobs, den kan automatisk generere e-mails og rydde op i systemer. Perl bruges stadig til dets oprindelige formรฅl, dvs. at udtrรฆkke data og generere rapporter. Det kan producere rapporter om ressourceforbrug og kontrollere for sikkerhedsproblemer i et netvรฆrk. Pรฅ grund af denne grund er Perl ogsรฅ blevet et populรฆrt sprog, der bruges i webudvikling, netvรฆrk og bioinformatik. Ud over alt dette kan perl ogsรฅ bruges til CGI-programmering.
Perl kan ogsรฅ bruges til billedoprettelse og -manipulation. Ud over at netvรฆrk via telnet, FTP osv., er oprettelse af grafisk brugergrรฆnseflade, VLSI-elektronik og oprettelse af mailfiltre for at reducere spamming-praksis nogle anvendelsesmuligheder af Perl.
Perl er ogsรฅ kendt for implementering af OOP (objektorienteret programmering) praksis og understรธtter alle former for arv (simpel, multiple & diamant), polymorfi og indkapsling. Perl er fleksibel nok til at understรธtte bรฅde proceduremรฆssige og OOP-praksis pรฅ samme tid. Perl har ogsรฅ ekstra moduler, som giver dig mulighed for at skrive eller bruge/genbruge kode skrevet ind Python, PHP, PDL, TCL, Octave, Java, C, C++, Basic, Ruby og Lua i dit Perl-script. Det betyder, at du kan kombinere Perl med disse ekstra programmeringssprog snarere at omskrive eksisterende kode.
Anvendelser af Perl-programmeringssprog
Hvorfor bruge Perl?
Det er rigtigt, at der er andre programmeringssprog, der kan bruges til at gรธre alle de ting, der er blevet nรฆvnt ovenfor, hvorfor skulle du sรฅ specifikt bruge Perl? Perl er meget let at lรฆre, isรฆr hvis du har en baggrund inden for computerprogrammering. Perl er designet til at vรฆre let for mennesker at skrive og forstรฅ i stedet for at gรธre det nemt at behandle pรฅ computere. Den bruger regulรฆre udtryk. Dets naturlige sprogstil er forskellig fra andre programmeringssprog, der bruger specifik grammatik og syntakser; Derfor er Perl meget fleksibel og pรฅlรฆgger dig ikke nogen sรฆrlig mรฅde at udtรฆnke en lรธsning eller et problem pรฅ. Perl er ekstremt bรฆrbar. Det kan kรธre pรฅ ethvert operativsystem, der har Perl-fortolker installeret, sรฅ det er platformsuafhรฆngigt. Alt sammen Linux Operating Systems kommer installeret med Perl, sรฅ du kan starte Perl-kodning i Linux lige ud af รฆsken. Dette er i modsรฆtning til Shell-scripts, hvor koden รฆndres med smagen af โโLinux-distribution, der bruges, hvilket gรธr den mindre og mindre bรฆrbar Smรฅ specifikke opgaver i Perl bliver meget nemme og hurtige. Igennem denne Perl-tutorial for begyndere lรฆrer du, hvordan du kan kode smรฅ, hurtige programmer til specifikke opgaver. Lad os tage et simpelt eksempel pรฅ det klassiske Hello World-program, som bruges til at begynde at lรฆre et hvilket som helst programmeringssprog, der har UNIX som sine rรธdder:
Eksempel: Perl hej verden

#!/usr/bin/perl print "Hello, world!";
Output:
Hej verden!
Ovenstรฅende to linjer kode vil udskrive Hej, verden! Var det nu ikke for enkelt og hurtigt? Studerende med viden om C, C++ vil vide, at det krรฆver mange flere linjer kode at opnรฅ det samme output pรฅ disse sprog.
Du undrer dig mรฅske over hvorfor Perl er sรฅ berรธmt pรฅ nettet. Det er enkelt, da de fleste af de ting, der sker pรฅ nettet, er af TEXT, og Perl er meget god til tekstbehandling. Hvis vi sammenligner Perl med et af sprogene, vil Perl vรฆre det bedste sprog, som er godt i filhรฅndtering, tekstbehandling og outputrapportering
En af de bedste fordele ved Perl er, at det er det gratis at bruge
Perl-fรฆllesskabet er overbevist om, at software skal vรฆre frit tilgรฆngeligt, frit modificerbart og frit distribuerbart. Flere frivillige fra Perl-samfundet strรฆber efter at gรธre programmeringssproget sรฅ godt som muligt.
Fordele og ulemper ved Perl
| Fordele: | Ulemper: |
|---|---|
|
|
|
|
|
Lad os komme igang
Med tilstrรฆkkelig viden om Perls historie og grundlรฆggende begreber inden for computerprogrammering, der krรฆves til kodning i Perl, er det pรฅ tide, at vi tager dykket og kommer i gang med Perl. Det nรฆste kapitel vil lรฆre dig, hvordan du kan konfigurere Perl pรฅ dit system og gรธre dig klar til kodningsrejsen i Perl. Denne Perl scripting tutorial vil tage Linux som det OS, som eleverne vil bruge til kodning i Perl.
Download og installer Perl โ Windows, Mac og Linux
Hvordan fรฅr man Perl?
Gode โโnyheder du har det sikkert!
Men hvis du ikke allerede kan finde det pรฅ dit system, kan du stadig fรฅ det gratis.
For at finde ud af, om du allerede har Perl installeret, skal du gรฅ ind pรฅ kommandolinjen og skrive: perl -v

Kommandoen viser version af Perl, hvis den er installeret. I dette tilfรฆlde er versionen v5.14.2. Men hvis ikke... sรฅ gรฅ ikke i panik...
Unix
|
Allerede installeret Leveres forudinstalleret med Perl, selvom du muligvis skal opdatere til den nyeste version. |
Mac OS
|
Allerede installeret OSX leveres med Perl forudinstalleret, selvom du muligvis skal opdatere den til den nyeste version |
Windows
|
Skal installeres To muligheder er tilgรฆngelige
|
Opdatering af Perl pรฅ Linux:
Hvis du har brug for at opdatere Perl-versionen, skal du blot indtaste en enkelt kommandolinje
sudo apt-get install perl
og slappe af. Resten bliver der taget hรฅnd om. Bare sรธrg for, at du har en aktiv internetforbindelse.


Installer perl til Windows:
Fรธrst skal du downloade Active Perl fra denne link. Fรธlg disse trin for at installere ActivePerl pรฅ Windows system. Se nedenstรฅende skรฆrmbilleder for det samme.
Trin 1: Nรฅr du har downloadet installationsprogrammet og starter installationen, vil du se nedenstรฅende vindue, klik pรฅ nรฆste for at fortsรฆtte.

Trin 2: Accepter licensaftalen for at fortsรฆtte installationen.

Trin 3: Nedenfor er forskellige pakker, der vil blive installeret. Som standard vil alle blive valgt. Det eneste, der er anderledes, er PPM (Perl Package Manager). Dette er hjรฆlpeprogrammet leveret af Active Perl til at installere eksterne Perl-moduler eller -biblioteker i dit system. Klik pรฅ Nรฆste for at fortsรฆtte.

Trin 4: Dette er forskellige typer af Perl-udvidelser, der kan bruges til Perl. For det meste vil vi bruge .Pl, .Plx og .Pm til Perl. Perl-moduler bruger grundlรฆggende .Pm som deres filtypenavn til at henvise til en biblioteksfil. Vรฆlg alle muligheder, og klik pรฅ knappen Nรฆste.

Trin 5: Klik pรฅ knappen Installer for at fortsรฆtte med installationen.

Trin 6: Nรฅr det er installeret, skal du udfรธre kommandoen 'Perl โv' for at kontrollere, om Perl er installeret korrekt pรฅ dit system.

Der er mange ting, der skal diskuteres for at indstille Perl-miljรธet i bรฅde Linux og Windows, da der ikke vil vรฆre mange biblioteksfiler inkluderet i denne installation. Du skal manuelt installere dem. Du kan installere dem manuelt ved hjรฆlp af CPAN (Comprehensive Perl Archive Network) eller enten PPM, som kun virker for perl-vinduer. Men disse filer er ikke obligatoriske for at starte kodning i Perl.
Bortset fra denne Windows-opsรฆtning kan du bruge Windows 10's nye funktion i Linux-undersystemet over Windows og brug den til at kรธre perl-kode
Fรธrste Perl-program
Hello world!
Perl-eksempel: Hello World
#!/usr/bin/perl -w #this is just a commentโฆ print "Hello World";
Bare rolig, hvis du ikke forstรฅr denne tekst. Alt vil snart vรฆre klart. Kom nu og se det pรฅ linje:
#!/usr/bin/perl
Dette fortรฆller Operating System til at udfรธre denne fil med programmet placeret pรฅ /usr/bin/perl Nogle IDE'er har ikke brug for denne linje. Hvis det er nรธdvendigt, skal du her skrive en vej til din tolk. Husk! Denne sรฆrlige linje skal vรฆre i begyndelsen af โโdit program og skal starte fra #! brug advarsler; Dette er en anden speciel kommando, som fortรฆller tolken at vise alle advarsler, dvs. -w som aktiverer advarsler globalt.
print "Hello World";
Printinstruktionen skriver tekst til skรฆrmen. Semikolonet i slutningen af โโlinjen fortรฆller perl-fortolkeren, at instruktionen er fรฆrdig. Du skal sรฆtte et semikolon i slutningen af โโhver instruktion i Perl-kode. Bemรฆrk anfรธrselstegn(โ). Det er nรธdvendigt for printinstruktion. Gem ovenstรฅende script som firstprog.pl
On Windows
Hvis du har Strawberry installeret, kan du blot klikke pรฅ Kรธr. Du kan ogsรฅ kรธre kommandolinjegrรฆnseflade og skrive pรฅ konsollen:
C:\> perl path\firstprog.pl
eller, hvis perl.exe ikke er i din sti:
C:\> c:\perl\bin\perl.exe firstprog.pl
Pรฅ Linux/Unix
Du skal bare รฅbne terminalen og skrive:
perl firstprog.pl
Hvis du ikke kan kรธre programmet, skal du sรธrge for, at du er berettiget til at kรธre det. Indtast terminalen:
chmod +x firstprog.pl
Dit program er nu eksekverbart og klar til at kรธre. For at udfรธre, skriv:
./firstprog
Installer cpan minus moduler
Moduler er sรฆt koder, der bruges til at udfรธre opgaver, der udfรธrer almindelige operationer i flere programmer. Hvis du bruger perl-moduler, behรธver du ikke at omskrive koderne for at udfรธre den samme handling. Perl kan gรธre brug af sรฅdanne eksterne biblioteker af koder. Et af de bedste biblioteker er CPAN. Det stรฅr for Comprehensive Perl Archive Network og indeholder en stor mรฆngde Perl-moduler, som du kan bruge. Det er et fรฆllesskab eller netvรฆrk af et stort antal udviklere, der bidrager med sรฅdanne moduler. Ved at installere understรธttelse af CPAN-moduler i dit perl-modul, kan du gรธre brug af CPAN-modulerne og gรธre dit arbejde lettere. De fleste Perl-moduler er skrevet i Perl, nogle bruger XS (de er skrevet i C) sรฅ krรฆver en C-compiler (det er nemt at fรฅ denne opsรฆtning โ gรฅ ikke i panik. Moduler kan have afhรฆngigheder af andre moduler (nรฆsten altid pรฅ CPAN) og kan ikke installeres uden dem (eller uden en specifik version af dem) Det er vรฆrd at lรฆse dokumentationen for nedenstรฅende muligheder Hent, udpak, byg og installer moduler fra CPAN for at gรธre installationen af โโandre moduler nemmere (du takker os senere for at installere). App-cpanminus perl-moduler, i kommandolinjetypen:
cpan App::cpanminus
cpan App::cpanminus Sรธrg for, at du har internetforbindelse, mens perl-moduler downloades og installeres.

Installer nu ethvert modul:
cpan โi <Module_Name>.
Lad os se et eksempel pรฅ installation af et modul File::Data(Det er en grรฆnseflade til at fรฅ adgang til fildata).

Perl Variabel
Nu vil vi tale om variabler. Du kan forestille dig en variabel-lignende type container, som indeholder en eller flere vรฆrdier. Nรฅr den er defineret, forbliver navnet pรฅ variabelen det samme, men vรฆrdien eller vรฆrdierne รฆndres igen og igen.
Der er 3 typer variabler:
Variabletyper i Perl
De nemmeste er skalarer, og det er vores emne i dag
Skalar variabel
Denne type variabel har en enkelt vรฆrdi.
Dens navn begynder med et dollartegn og et Perl-id (det er navnet pรฅ vores variabel).
Skalรฆr variabel i Perl
Navngivningskonvention
Hvis du er fortrolig med andre programmeringssprog, sรฅ ville du vide, at der er visse regler om navngivning af variabler. Pรฅ samme mรฅde har Perl tre regler for navngivning af skalarer.
- Alle skalarnavne begynder med en $. Det er nemt at huske at prรฆfikse hvert navn med $. Tรฆnk pรฅ det som en $skalar.
- Ligesom PHP. efter det fรธrste tegn $, som er specielt i Perl, er alfanumeriske tegn, dvs. a til z, A til Z og 0 til 9 tilladt. Understregningstegn er ogsรฅ tilladt. Brug understregning til at opdele variabelnavnene i to ord. "Men det fรธrste tegn kan ikke vรฆre et tal"
- Selvom tal kan vรฆre en del af navnet, kan de ikke komme umiddelbart efter $. Dette indebรฆrer, at det fรธrste tegn efter $ enten vil vรฆre et alfabet eller en understregning. Dem der kommer fra C/C++ baggrund skal umiddelbart kunne genkende ligheden. Eksempler
Perl-eksempel:
$var; $Var32; $vaRRR43; $name_underscore_23;
Disse er dog ikke lovlige skalarvariablenavne.
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
Den generelle regel siger, at nรฅr Perl kun har en af โโnoget, er det en skalar. Skalarer kan lรฆses fra enheder, og vi kan bruge det til vores programmer.
To typer skalardatatyper
- Numbers
- Strings
Numbers:
I denne type skalardata kunne vi specificere:
- heltal, det er simpelthen hele tal, som 2, 0, 534
- floating-point tal, det er reelle tal, som 3.14, 6.74, 0.333

Bemรฆrk: Generelt ser Perl-fortolkeren heltal som flydende kommatal. For eksempel, hvis du skriver 2 i dine programmer, vil Perl se det som 2.0000
Heltals bogstaver:
Den bestรฅr af et eller flere cifre, eventuelt foranstillet af et plus eller minus og indeholder understregninger.
Perl-eksempler:
0; -2542; 4865415484645 #this also can be written with underscores (for clarity) : 4_865_415_484_645
Som du kan se - det er ikke noget sรฆrligt. Men tro mig, dette er den mest almindelige type skalarer. De er overalt.
svรฆvende bogstaver:
Den bestรฅr af cifre, eventuelt minus, decimaltegn og eksponent.
Perl-eksempler:
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

Oktal, hexadecimal og binรฆr reprรฆsentation:
Det er et alternativ til decimalsystemet. Tillad mig at vise dig oktal, hexadecimal og binรฆr reprรฆsentation. En kort tabel prรฆsenterer alle vigtige oplysninger om denne mรฆrkelige stil:
| Reprรฆsentation | Base | Fortsat af |
|---|---|---|
| Octal | 8 | 0 (nul) |
| Hexadecimal | 16 | 0x |
| Binary | 2 | 0b |
Perl-eksempler:
255; # 255 in decimal notation 0377; # 255 in octal notation 0xff; # 255 in hexadecimal notation 0b11111111; # 255 in binary notation
Alle disse vรฆrdier for Perl betyder det samme. Perl gemmer ikke vรฆrdierne i samme format. Det vil internt konvertere disse hexadecimale, binรฆre, oktale til decimale vรฆrdier.
Opgaven er den mest almindelige operation pรฅ en skalar, og den er meget enkel. Perl bruger for det lighedstegn. Det tager en vรฆrdi af udtrykket fra hรธjre side og sรฆtter denne vรฆrdi til vores variabel.
Lad os tage et kig pรฅ eksempler:
$size=15; # give $size value of 15 $y = -7.78; # give $y value of -7.78
Hvad mere er, du kan indsรฆtte variabel ikke kun et tal, men ogsรฅ et udtryk.
$z = 6 + 12 # give $z value of 18
Strings
Strings: Det er ogsรฅ en meget enkel type skalar.
Den maksimale lรฆngde af en streng i Perl afhรฆnger af mรฆngden af โโhukommelse, computeren har. Der er ingen grรฆnse for stรธrrelsen af โโstrengen, enhver mรฆngde af tegn, symboler eller ord kan udgรธre dine strenge. Den korteste streng har ingen tegn. Den lรฆngste kan fylde hele systemets hukommelse. Perl-programmer kan skrives udelukkende i 7-bit ASCII-tegnsรฆt. Perl giver dig ogsรฅ mulighed for at tilfรธje ethvert 8-bit eller 16-bit tegnsรฆt aka. ikke-ASCII-tegn i streng-literal. Perl har ogsรฅ tilfรธjet understรธttelse af Unicode UTF-8.

Ligesom tal er der to forskellige typer strenge:
- Enkelte citatstrenge bogstaver
- Double citater strenge bogstaver
Ordretal af strenge med citater
Enkelte anfรธrselstegn bruges til at omslutte data, du รธnsker skal tages bogstaveligt. Et kort eksempel og alt skal vรฆre klart:
Perl-eksempler:
#!/usr/bin/perl $num = 7; $txt = 'it is $num'; print $txt;
Output:
det er $num
Her pรฅ grund af enkelte anfรธrselstegn er vรฆrdien af โโ$num ikke taget, og de bogstavelige tegn '$','n', 'u' & 'm' tilfรธjes til vรฆrdien af โโ$txt
Double-citerede strenge bogstaver
Double anfรธrselstegn bruges til at omslutte data, der skal interpoleres fรธr behandling. Det betyder, at escapede tegn og variabler ikke blot bogstaveligt talt indsรฆttes i senere operationer, men evalueres pรฅ stedet. Escape-tegn kan bruges til at indsรฆtte nye linjer, faner osv.
Perl-eksempler:
$num = 7; $txt = "it is $num"; print $txt;
Output:
det er 7
Her pรฅ grund af dobbelte anfรธrselstegn lรฆgges vรฆrdien af โโ$num til vรฆrdien af โโ$txt
Double-citater interpolerer skalar- og matrixvariabler, men ikke hashes. Pรฅ den anden side kan du bruge dobbelte anfรธrselstegn til at interpolere udsnit af bรฅde arrays og hashes.
Mystisk \n
Overvej fรธlgende program
Perl-eksempler:
print "hello \n";
Output:
Hej
Perl viser ikke kun 'hej\n', men kun 'hej'. Hvorfor? Fordi '\n' er et sรฆrligt tegn og betyder, at du vil gรฅ til en ny linje, mens du viser teksten i dit program. udskriv "hej\n ny linje"; Nรฆste spรธrgsmรฅl - er der andre specielle tegn? Ja, det er de! Men bare rolig - kun nogle fรฅ. Tjek tabellen nedenfor
| Konstruere | Beskrivelse |
|---|---|
| \n | ny linje |
| \r | afkast |
| \t | fanen |
| \f | formfoder |
| \b | backspace |
| \a | klokke |
| \e | undslippe |
| \ 007 | enhver oktal ASCII-vรฆrdi (her, 007 = klokke) |
| \x7f | enhver hex-vรฆrdi (her, 7f = slet) |
| \\ | backslash |
| \ โ | dobbelt citat |
| \l | nรฆste bogstav med smรฅ bogstaver |
| \L | alle fรธlgende bogstaver med smรฅ bogstaver indtil \E |
| \u | stort nรฆste bogstav |
| \U | alle fรธlgende bogstaver med store bogstaver indtil \E |
| \E | Afslut \L, \U |
Jeg ved godt, der er ikke 'bare nogle fรฅ'... Men tro mig, du skal bare vide det
Strings Variable
Det er den samme operation, som vi ser i taltildeling. Perl henter vores streng fra hรธjre side af lighedstegnet og sรฆtter denne streng til en variabel.
Perl-eksempler:
$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:
vejledning315
Som du kan se, kan du sรฆtte tal og strenge i de samme variable. Der er ingen klasse af variabler.
Strengsammenkรฆdning (punktum):
Sammenkรฆdningsoperatรธren "." forener to eller flere strenge. Huske! Hvis strengen indeholder anfรธrselstegn, vognretur, omvendt skrรฅstreg, skal alle disse specialtegn escapes med en omvendt skrรฅstreg.
Eksempler pรฅ Perl ' ' variabel:
#!/usr/bin/perl $a = "Tom is"; $b = "favorite cat"; $c = $a ." mother's ". $b; print $c;
Output:
Tom er mors yndlingskat
Strengene
"$a", "$b", er sammenkรฆdet og gemt i "$c" ved hjรฆlp af "." operatรธr.
Til sidstโฆ
Konvertering mellem Numbers og strenge:
Som du ved, konverterer Perl automatisk mellem tal til streng efter behov. Hvordan ved Perl, hvad vi har brug for lige nu? Dette er enkelt - alt afhรฆnger af operatoren (vi taler om operatorer senere, nu, accepter bare at der er mange operatorer, forskellige for tal og strenge) Hvis en operator forventer et tal, vil Perl bruge vรฆrdien som et tal . Hvis en operatรธr forventer en streng, vil Perl bruge vรฆrdien som en streng. Med andre ord - du behรธver ikke bekymre dig om denne form for konvertering. Kort eksempel og alt skal vรฆre klart:
Perl-eksempler:
$string = "43"; $number = 28; $result = $string + $number; print $result;
Output:
71
vรฆrdien af โโ$string konverteres til et heltal og lรฆgges til vรฆrdien af โโ$number.
Resultatet af tilfรธjelsen, 71, tildeles $result.
Omfang af en variabel โ Adgangsmodifikatorer
Vi kan erklรฆre en skalar i hvor som helst i programmet. Men du skal angive en adgangsmodifikator
Der er 3 typer modifikatorer
- my
- lokale
- vores
Mit: Ved at bruge dette kan du erklรฆre enhver variabel, som er specifik i blokken. dvs inden for de krรธllede seler.
#!/usr/bin/perl
my $var=5;
if(1)
{
my $var_2 =$var;
}
print $var_2;
Ingen output
Resultatet af programmet bliver ingenting!

I ovenstรฅende eksempel vil du se, at der er to variabler erklรฆret, den ene er inde i if-blokken ($var_2) og den anden er uden for If-blokken ($var). Variablen, som er erklรฆret uden for blokken, vil vรฆre tilgรฆngelig for if-blokken, men den variabel, der blev erklรฆret inde i if-blokken, vil ikke vรฆre tilgรฆngelig for det ydre program.
Lokal: Ved at bruge dette kan vi faktisk maskere de samme variabelvรฆrdier til forskellige vรฆrdier uden faktisk at รฆndre den oprindelige vรฆrdi af variablen, antag at vi har en variabel $a, for hvilken vรฆrdien er tildelt 5, kan du faktisk รฆndre vรฆrdien af โโden variabel ved at generklรฆre den samme variabel ved hjรฆlp af lokale nรธgleord uden at รฆndre den oprindelige vรฆrdi af variablen, som er 5. Lad os se, hvordan dette virker med et eksempel.
#!/usr/bin/perl
$var = 5;
{
local $var = 3;
print "local,\$var = $var \n";
}
print "global,\$var = $var \n";
Outputtet af ovenstรฅende program vil vรฆre pรฅ denne mรฅde.
lokal, $var = 3
global, $var = 5
Pรฅ denne mรฅde kan vi รฆndre vรฆrdien af โโvariablen uden at pรฅvirke den oprindelige vรฆrdi.
Vores: Nรฅr en variabel er erklรฆret med adgangsmodifikator "vores", kan den bruges pรฅ tvรฆrs af hele pakken. Antag, at du har Perl-modul eller en pakke test.pm, som har en variabel erklรฆret med vores omfang. Denne variabel kan tilgรฅs i alle scripts, der vil bruge den pรฅgรฆldende pakke.
Hvis du er seriรธs omkring programmering i Perl, bรธr du begynde dit program med
#!/usr/local/bin/perl
brug streng;
Dette vil hjรฆlpe dig med at skrive bedre og renere kode. 'brug streng' aktiverer streng pragma, som fรฅr dig til at erklรฆre dine variabler med mit sรธgeord.
Dette er en god programmeringspraksis
#!/usr/local/bin/perl use strict; $var = 10; print "$var";
Resultat: Fejl
#!/usr/local/bin/perl use strict; my $var = 10; print "$var";
Output:
10
Perl Array
Hvad er Perl Array?
Et array er en speciel type variabel, som gemmer data i form af en liste; hvert element kan tilgรฅs ved hjรฆlp af indeksnummeret, som vil vรฆre unikt for hvert element. Du kan gemme tal, strenge, flydende vรฆrdier osv. i dit array. Det ser godt ud, sรฅ hvordan opretter vi et array i Perl? I Perl kan du definere en matrix ved at bruge '@'-tegn efterfulgt af det navn, du vil give. Lad os overveje at definere et array i Perl.
mit @array;
Sรฅdan definerer vi et array i Perl; du tรฆnker mรฅske, hvordan vi skal gemme data i den. Der er forskellige mรฅder at gemme data pรฅ i et array. Dette afhรฆnger af, hvordan du vil bruge det.
my @array=(a,b,c,d); print @array;
Output:
abcd
Dette er et array med 4 elementer i det.
Array-indekset starter fra 0 og slutter til dets maksimale deklarerede stรธrrelse, i dette tilfรฆlde er den maksimale indeksstรธrrelse 3.
Perl Array Eksempel
Du kan ogsรฅ erklรฆre et array pรฅ ovenstรฅende mรฅde; den eneste forskel er, at den gemmer data i et array, der betragter et hvidt mellemrum for at vรฆre afgrรฆnsningen. Her betyder qw() citatord. Betydningen af โโdenne funktion er at generere en liste med ord. Du kan bruge qw pรฅ flere mรฅder til at erklรฆre et array.
@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
Antag, at du vil tildele en vรฆrdi til 5th element i et array, hvordan skal vi gรธre det.
$array [4] ='e';
Sekventiel array
Sekventielle arrays er dem, hvor du gemmer data sekventielt. Antag, at du vil gemme 1-10 tal eller alfabeter az i et array. I stedet for at skrive alle bogstaverne, kan du prรธve noget som nedenfor โ
@numbers= (1..10); print @numbers; #Prints numbers from 1 to 10;
Output:
12345678910
Perl Array Stรธrrelse
Vi har et array, som allerede er tilgรฆngeligt, og du ved ikke, hvad stรธrrelsen af โโdet array er, sรฅ hvad er den mulige mรฅde at finde det pรฅ.
@array= qw/a b c d e/; print $size=scalar (@array);
Kan vi fรฅ stรธrrelsen pรฅ et array uden at bruge funktioner? Ja vi kan.
@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
Dynamisk array
Ovenstรฅende metode til at erklรฆre et array kaldes statiske arrays, hvor du kender stรธrrelsen af โโet array.
Hvad er Dynamic Array?
Dynamiske arrays er dem, du erklรฆrer uden at angive nogen vรฆrdi pรฅ dem. Sรฅ prรฆcis hvornรฅr gemmer vi vรฆrdier i det array? Enkelt, vi opbevarer dem i lรธbet af kรธretiden. Her er et simpelt program til det.
Vi vil bruge nogle indbyggede Perl-funktioner til at udfรธre denne opgave.
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:
Dette er
slags dyn
mic
rr
y
Opdelingsfunktionen opdeler strengens indhold i et array baseret pรฅ det afgrรฆnsede tegn, der leveres til den. Denne funktion vil ogsรฅ fjerne afgrรฆnsningstegnet fra strengen, i dette tilfรฆlde er det 'a';
Push, Pop, shift, unshift for Perl-arrays:
Disse funktioner kan bruges i Perl til at tilfรธje/slette til array-elementer.
- Perl Push: tilfรธjer array-element i slutningen af โโet eksisterende array.
- Perl Pop: fjerner det sidste element fra et array.
- Perl Shift: fjerner det fรธrste element fra et array.
- Perl Unshift: tilfรธjer et element i begyndelsen af โโet array.

Lad os se et eksempel, hvor vi kan bruge nedenstรฅende funktioner.
@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.: Man Tir Ons
2. ved tryk : Man Tir Ons Tors
3. ved udskiftning: Fre Man Tir Ons Tors
4. nรฅr pop : Fre Man Tir Ons
5. ved skift : Man Tir Ons
Perl Hashes
Hvorfor har vi brug for Hash?
Vi har allerede lรฆrt om skalarer og arrays i tidligere afsnit.
Hvad prรฆcist gรธr skalarer? Den gemmer kun heltal og strenge.
Hvad gรธr arrays helt prรฆcist? Det er en samling af skalarer, hvor du fรฅr adgang til hvert element i et array ved hjรฆlp af indekser. Men er det en god idรฉ at bruge et array, nรฅr du har hundreder og tusinder af poster? Vi glemmer hvilket indeks der har hvilken vรฆrdi. For at overvinde denne situation har vi noget som perl-hash.
Hvad er hashes?
En hash kan ogsรฅ indeholde sรฅ mange skalarer, som arrayet kan rumme. Den eneste forskel er, at vi ikke har noget indeks, men vi har nรธgler og vรฆrdier. En hash kan erklรฆres, startende med % efterfulgt af navnet pรฅ hashen. Lad os se et eksempel pรฅ, hvordan vi kan definere en Perl-hash, og hvordan vi kan skelne denne fra array
Overvej et eksempel pรฅ tre personer, og deres aldre er reprรฆsenteret i et array.
@array=('Sainath',23,'Krishna',24,'Shruthi',25); #This is how an array looks.
print @array;
Output:
Sainath 33Krishna24Shruthi25
Pรฅ denne mรฅde er det svรฆrt at kende individuelle aldre, da vi skal huske bรฅde indeksplaceringer af navn og alder pรฅ alle personer. Det kan vรฆre enkelt, nรฅr du har 3 navne, men nรฅr du har 1000 eller flere? Du kender svaret.

Dette kan vi overvinde ved hjรฆlp af en hash.
Hash-eksempel:
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
Vi har nu erklรฆret en hash, fantastisk!! Men hvordan fรฅr vi adgang til eller udskriver det? Hvert element i hash skal tilgรฅs med dets tilhรธrende nรธgle, som der vil vรฆre tildelt en vรฆrdi for. Sรฅ der er en en-en mapping mellem hver af nรธglerne og vรฆrdien i hashen.
For at udskrive en persons alder skal du blot huske navnet pรฅ den pรฅgรฆldende person.
print $hash{'Krishna'}; # This how we should access a hash. Key enclosed within {}.
Du har mรฅske undret dig over, hvorfor jeg brugte $hash{KeyName}, husk at en hash igen er en samling af skalarer. Sรฅ vi kan bruge $, som reprรฆsenterer skalar til at fรฅ adgang til hvert hash-element.

Bemรฆrk: Hver nรธgle i hash skal vรฆre unik, ellers vil den tilsidesรฆtte din vรฆrdi, som blev tildelt tidligere.
Hvordan kan vi tildele en hash til en anden hash? Enkel, pรฅ samme mรฅde som vi gรธr for
Vi kan ogsรฅ printe hele hash.
%hash=( 'Tom' => 23); %newHash=%hash; # Assigning hash to a new hashprint %newHash; print %newHash;
Output:
Tom23
Tilfรธj Perl Hashes
Som du kan se, har vi allerede en hash %newHash, og nu skal vi tilfรธje flere poster i den.
$newHash{'Jim'}=25;
$newHash{'John'}=26;
$newHash{'Harry'}=27;
print %newHash;
Output:
Jim25John26Harry27
Perl Delete-tast
Du รธnsker mรฅske at slette en post fra en hash. Sรฅdan kan vi gรธre det.
delete $newHash{'Jim'};#This will delete an entry from the hash.
Slet er en indbygget funktion i Perl. Her vil vi se et eksempel pรฅ at tildele en hash til et array.
@array=%newHash; print "@array";
Bemรฆrk: Hver gang du udskriver en hash, eller nรฅr du gemmer hash i et array. Rรฆkkefรธlgen kan altid afvige. Det er ikke altid det samme.
Vi kan kun tildele nรธgler eller vรฆrdier af en hash til en matrix.
@arraykeys= keys(%newHash); @arrayvalues=values(%newHash); print "@arraykeys\n"; print "@arrayvalues\n"; # \n to print new line.
For at fjerne alle poster i hashen, kan vi direkte tildele hashen til null.
%newHash=();# Dette vil omdefinere hashen uden indtastninger.
Perl betingede erklรฆringer
Vi kan bruge betingede erklรฆringer i Perl. Sรฅ hvad er betingede udsagn? Betingede erklรฆringer er dem, hvor du faktisk tjekker, om nogle omstรฆndigheder er opfyldt i din kode.
Tรฆnk pรฅ et eksempel, du kรธber nogle frugter, og du kan ikke lide, at prisen er mere end 100 dollars. Sรฅ reglen her er 100 dollars.
Perl understรธtter to typer betingede udsagn; de er hvis og medmindre.
Perl If
Hvis kodeblok vil blive udfรธrt, nรฅr betingelsen er sand.

my $a=5;
if($a==5)
{
print "The value is $a";
}
Output:
5
Perl hvis andet
Det ser godt ud. Lad os tรฆnke pรฅ en situation, hvor $a ikke er 5.
my $a=10;
if($a==5)
{
print "The values is $a ---PASS";
}
else
{
print "The value is $a ---FAIL";
}
Output:
Vรฆrdien er 10 โ FAIL
Pรฅ denne mรฅde kan vi kun kontrollere รฉn tilstand ad gangen. Er det en begrรฆnsning? Nej, du kan ogsรฅ kontrollere forskellige forhold ved at bruge 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";
}
Output:
Udfรธrt elsif-blok โ Vรฆrdien er 5
I ovenstรฅende tilfรฆlde vil elsif-blokken blive udfรธrt, da $a er lig med 5.
Der kan vรฆre situationer, hvor bรฅde if- og elsif-kodeblokke mislykkes. I dette scenarie vil den anden kodeblok blive udfรธrt. Du kan faktisk eliminere else code check, hvis du ikke kan lide at inkludere.
Perl Nested If
I dette tilfรฆlde kan du bruge if-kodeblok i en mere if-kodeblok.
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:
Inde i 1. anden blok โ Vรฆrdien er 11
Udfรธr den samme kode ved at รฆndre vรฆrdien af โโ$a; du kan finde ud af resten.
Perl Medmindre
Du har allerede en idรฉ om, hvad hvis gรธr (hvis betingelsen er sand, vil den udfรธre kodeblokken). Medmindre er modsat if, medmindre kodeblok vil blive udfรธrt, hvis betingelsen er falsk.
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:
Inde i 1. anden blok โ Vรฆrdien er 5
Gรฆt hvad der vil vรฆre output. Du har ret!!!!!. Outputtet vil vรฆre udskriftserklรฆringen for else-blokken. Pรฅ grund af betingelsen i, medmindre kodeblok er sand, skal du huske, medmindre blokering kun udfรธres, hvis betingelsen er falsk. Skift vรฆrdien af โโ$a og udfรธr koden, sรฅ vil du se forskellen.
Perl Brug af if
$a= " This is Perl";
if($a eq "SASSDSS"){
print "Inside If Block";
}
else
{
print "Inside else block"
}
Output:
Inde i anden blok
Bruger medmindre
$a= " This is Perl";
unless($a eq "SASSDSS"){
print "Inside unless Block";
}
else
{
print "Inside else block"
}
Output:
Inde, medmindre Block
Perl Loops โ Kontrolstrukturer
Perl understรธtter kontrolstrukturer svarende til andre programmeringssprog. Perl understรธtter fire typer kontrolstrukturer for, foreach, while og indtil. Vi bruger disse udsagn til gentagne gange at udfรธre noget kode.
Til slรธjfe Perl
For kodeblok vil udfรธres, indtil betingelsen er opfyldt. Lad os tage et eksempel pรฅ, hvordan man Perl looper et array.
my @array=(1..10);
for(my $count=0;$count<10;$count++)
{
print "The array index $count value is $array[$count]";
print "\n";
}
Output:
Vรฆrdien af โโmatrixindeks 0 er 1
Vรฆrdien af โโmatrixindeks 1 er 2
Vรฆrdien af โโmatrixindeks 2 er 3
Vรฆrdien af โโmatrixindeks 3 er 4
Vรฆrdien af โโmatrixindeks 4 er 5
Vรฆrdien af โโmatrixindeks 5 er 6
Vรฆrdien af โโmatrixindeks 6 er 7
Vรฆrdien af โโmatrixindeks 7 er 8
Vรฆrdien af โโmatrixindeks 8 er 9
Vรฆrdien af โโmatrixindeks 9 er 10
Her, i for () udtryk, er der mange udsagn inkluderet. Der er en betydning for hver af dem.
for (initialisering; betingelse; stigning)
Her er en anden mรฅde at bruge til.
for(1..10)
{
print "$_ n";
print "\n";
}
Output:
1n
2n
3n
4n
5n
6n
7n
8n
9n
10n
Perl Foreach
For hver udsagn kan bruges pรฅ samme mรฅde som for; Den stรธrste forskel er, at vi ikke har nogen tilstandskontrol og stigning i dette.
Lad os tage det samme eksempel med foreach perl.
my @array=(1..10);
foreach my $value (@array)
{
print " The value is $value\n";
}
Output:
Vรฆrdien er 1
Vรฆrdien er 2
Vรฆrdien er 3
Vรฆrdien er 4
Vรฆrdien er 5
Vรฆrdien er 6
Vรฆrdien er 7
Vรฆrdien er 8
Vรฆrdien er 9
Vรฆrdien er 10
Foreach tager hvert element i et array og tildeler denne vรฆrdi til $var for hver iteration. Vi kan ogsรฅ bruge $_ til det samme.
my @array=(1..10);
foreach(@array)
{
print " The value is $_ \n"; # This is same as the above code.
}
Output:
Vรฆrdien er 1
Vรฆrdien er 2
Vรฆrdien er 3
Vรฆrdien er 4
Vรฆrdien er 5
Vรฆrdien er 6
Vรฆrdien er 7
Vรฆrdien er 8
Vรฆrdien er 9
Vรฆrdien er 10
Dette ser godt ud til at fรฅ adgang til arrays. Hvad med hashes, hvordan kan vi fรฅ hashnรธgler og vรฆrdier ved hjรฆlp af foreach?
Vi kan bruge foreach til at fรฅ adgang til nรธgler og vรฆrdier af hashen ved at slรธjfe den.

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $key (keys %hash)
{
print "$key \n";
}
Output:
Mickey
Tom
Jerry
Du undrer dig mรฅske, hvorfor vi brugte Keys i foreach(). Keys er en indbygget funktion i Perl, hvor vi hurtigt kan fรฅ adgang til nรธglerne til hashen. Hvad med vรฆrdier? Vi kan bruge vรฆrdier funktion til at fรฅ adgang til vรฆrdier af hashen.
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:
vรฆrdien er 24
vรฆrdien er 23
vรฆrdien er 25
Perl Mens
Perl While-lรธkken er en kontrolstruktur, hvor kodeblokken vil blive eksekveret, indtil betingelsen er sand.
Kodeblokken afsluttes kun, hvis betingelsen er falsk.
Lad os tage et eksempel for Perl While loop.

Her er et problem, som vil krรฆve input fra brugeren og ikke afsluttes fรธr nummeret angivet som '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"
Output:
Gรฆt et tal mellem 1 og 10
9
Gรฆt et tal mellem 1 og 10
5
Gรฆt et tal mellem 1 og 10
7
Du gรฆttede lykketallet 7
I ovenstรฅende eksempel vil while-betingelsen ikke vรฆre sand, hvis vi indtaster andet input end '7'.
Hvis du ser, hvordan while virker her, vil kodeblokken kun udfรธres, hvis betingelsen om et stykke tid er sand.
Perl gรธr-mens
Do while-lรธkken udfรธres mindst รฉn gang, selvom betingelsen i while-sektionen er falsk.
Lad os tage det samme eksempel ved at bruge gรธr mens.
$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
Nu er vรฆrdien mindre end 1
Perl indtil
Indtil kodeblok ligner medmindre i en betinget erklรฆring. Her vil kodeblokken kun udfรธres, hvis betingelsen i indtil blok er falsk.
Lad os tage det samme eksempel, som vi brugte i tilfรฆlde af et stykke tid.
Her er et problem, som vil krรฆve input fra brugeren og ikke afsluttes, fรธr navnet angivet som andet end '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:
Indtast et hvilket som helst navn sai
Perl gรธr-indtil:
Gรธr indtil kan kun bruges, nรฅr vi har brug for, at en betingelse er falsk, og den skal udfรธres mindst รฉn gang.
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:
Indtast et hvilket som helst navn Howard
Indtast et hvilket som helst navn Sheldon
Indtast et hvilket som helst navn sai
Udfรธr mens, gรธr-mens, indtil og gรธr-indtil eksempelkoder for at se forskellen.
Perl OperaTor
Hvad er Operator?
Operatorer pรฅ computersprog angiver en handling, der kan udfรธres pรฅ et sรฆt af variabler eller vรฆrdier, som computeren kan forstรฅ. Perl har inkorporeret det meste Operators fra C sprog. Perl har mange operatรธrer sammenlignet med andre programmeringssprog. Operators er kategoriseret som aritmetiske, logiske, relationelle og tildelingsoperatorer.
Aritmetik Operators:
Aritmetiske operatorer er dem, der kan bruges til at udfรธre nogle grundlรฆggende matematiske operationer. Disse aritmetiske operatorer er binรฆre operatorer, hvor vi har brug for to argumenter for at udfรธre en grundlรฆggende operation. Vi kan ogsรฅ bruge unรฆre operatorer til andre grundlรฆggende operationer; du kan se forskellen i eksemplerne nedenfor.
| OperaTor | Beskrivelse | Eksempel |
|---|---|---|
|
+ |
Tilfรธjelsesoperation bruges til at tilfรธje to vรฆrdier eller variabler holde vรฆrdier |
$x=5+6; # eller $y=6; $z=$x+$y; |
|
- |
Subtraktionsoperator bruges til at trรฆkke to vรฆrdier eller variabler med vรฆrdier fra |
$x=6-5; # eller $y=6; $z=$x-$y; |
|
* |
Multiplikationsoperator bruges til at multiplicere to vรฆrdier eller variabler med vรฆrdier |
$x=6*5; # eller $y=6; $z=$x*$y; |
|
/ |
Divisionsoperator bruges til at dividere to vรฆrdier eller variabler med vรฆrdier |
$x=36/6; # eller $y=6; $z=$x/$y; |
|
** |
Den eksponentielle operator, der bruges til at give eksponent og fรฅ vรฆrdien. Eks: 22 = 43 = 27 |
$x=5**5; # eller $x=4; $y=2; $z=$x**$y; |
|
% |
Modulus-operator bruges til at fรฅ pรฅmindelsen under opdeling af to vรฆrdier eller variabler med vรฆrdier |
$x=5%2; # eller $x=10; $y=2; $z=$x % $y; |
|
++ |
Unรฆr additionsoperator for at รธge vรฆrdien af โโen variabel med 1 |
$x=5; $x++; Or ++$x; |
|
โ |
Unรฆr subtraktionsoperator for at reducere vรฆrdien af โโen variabel med 1 |
$x=5; $xโ; # post dekrement Or โ$x;# fรธr dekrement |
Eksempel for at fuldfรธre alle ovenstรฅende operationer.
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:
Tilfรธjelse af 10 og 2 er 12
Sub af 10 og 2 er 8
Mul af 10 og 2 er 20
Div pรฅ 10 og 2 er 5
Exp pรฅ 10 og 2 er 100
Mod pรฅ 10 og 2 er 0
Opgave Operators:
Tildelingsoperatorer tildeler simpelthen vรฆrdier til variabler, men der er en ting mere, som vi skal huske her, tildelingsoperatorer vil ogsรฅ udfรธre aritmetiske operationer og tildele den nye vรฆrdi til den samme variabel, som operationen udfรธres pรฅ.
| OperaTor | Beskrivelse | Eksempel |
|---|---|---|
|
+= |
Tilfรธjelsesoperator bruges til at tilfรธje og tildele vรฆrdien til samme variabel |
$x=4; $x+=10; |
|
-= |
Subtraktionsoperator bruges til at trรฆkke fra og tildele vรฆrdien til samme variabel |
$x=4; $x-=10; |
|
*= |
Multiplikationsoperator bruges til at tilfรธje og tildele vรฆrdien til samme variabel |
$x=4; $x*=10; |
|
/= |
Divisionsoperator bruges til at dividere og tildele vรฆrdien til samme variabel |
$x=4; $x/=10; |
|
** = |
Eksponentiel operator bruges til at fรฅ eksponent og tildele vรฆrdien til samme variabel |
$x=4; $x**=10; |
|
%= |
Modulus operator bruges til at fรฅ en pรฅmindelse under division og tildele vรฆrdien til den samme variabel |
$x=10; $x%=4; |
Eksempel for at fuldfรธre alle ovenstรฅende operationer.
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:
Tilfรธj = 15
Sub= 10
Mul = 50
Div = 10
Logisk og relationel Operators:
Perl bruger logiske operatorer til at sammenligne tal og strenge. Det meste af tiden bruges logiske operatorer i betingede erklรฆringer.
Logisk og relationel Operators i Perl
| OperaTor | Beskrivelse |
|---|---|
|
==eller lign |
Operator bruges til at kontrollere, om begge variabler er ens |
|
!=Eller nej |
Operator bruges til at kontrollere, om begge variabler ikke er ens |
|
> eller gt |
Operator bruges til at kontrollere om A er stรธrre end B |
|
<or lt |
Operator bruges til at kontrollere om A er mindre end B |
|
>=eller ge |
Operator bruges til at kontrollere om A er stรธrre end eller lig med B |
|
<=eller le |
Operator bruges til at kontrollere om A er mindre end eller lig med B |
|
|| eller eller |
Operator bruges til at kontrollere, at enten A eller B holder vรฆrdi |
|
&&eller og |
Operator bruges til at kontrollere bรฅde A og B holder vรฆrdi |
Lad os tage et eksempel, hvor vi kan forklare alle scenarierne.
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:
Sandt - lig 5 og 5
Sandt - ikke lig med 6 og 7
Sandt - 7 stรธrre end 6
Sandt - 6 mindre end 7
Sandt - 6 mindre end 7
Sandt - 7 stรธrre end 6
Du kan se eksempler pรฅ logiske operatorer i senere afsnit.
Perl Specialvariabler
Hvad er Perl Special Variables?
Sรฆrlige variabler i Perl er dem, der har en foruddefineret betydning. Disse variabler er angivet med enten rigtige navn eller tegnsรฆtningssymboler. Vi har en speciel variabel for alle Perl-understรธttede variabler som skalรฆre specialvariabler, Array specialvariabler, hash specialvariabler. De fleste af de specielle variabler, vi bruger, er af skalarer.
Nรฅr vi vil bruge den specielle variabel med dens navn, sรฅ er vi nรธdt til at indlรฆse et Perl-modul 'brug engelsk', for eksplicit at sige Perl-fortolker, at vi vil bruge specielle variabler ved at bruge dens navn.
Skalรฆre specielle variabler
| Variabel | Beskrivelse |
|---|---|
|
$_$ARG |
Dette er standardvariablen, som gemmer de aktuelle vรฆrdier. |
|
$0 eller $PROGRAM_NAME |
Gemmer filnavnet pรฅ Perl-scriptet. |
|
$/ |
Indtastningsrecordseparatoren, denne har en standardvรฆrdi pรฅ '\n', som er nylinjetegn |
|
$. |
Indeholder det aktuelle linjenummer pรฅ den fil, der lรฆses |
|
$, |
Outputfeltseparator, denne bruges hovedsageligt af print()-sรฆtningen. Som standard er vรฆrdien af โโdenne sat til 0, vi kan รฆndre vรฆrdien af โโdenne variabel. |
|
$\ |
Output record separator, vรฆrdien af โโdenne variabel vil vรฆre tom; vi kan tildele en hvilken som helst vรฆrdi til dette, som vil blive brugt af print()-sรฆtningen, mens outputtet udskrives. |
|
$# |
Denne variabel bruges til outputformat under udskrivning af tal. |
|
$%$FORMAT_PAGE_NUMBER |
Beholder det aktuelle sidenummer for den lรฆste fil. |
|
$=$FORMAT_LINES_PER_PAGE |
Vil holde den aktuelle sidelรฆngde af filen lรฆst. |
|
$-$FORMAT_LINES_LEFT |
Indeholder vรฆrdien af โโdet antal linjer, der er tilbage at udskrive fra siden. |
|
$~$FORMAT_NAME |
Formatnavn: Indeholder formatet for det aktuelt valgte output som standard filhรฅndtagsnavnet. |
|
$^$FORMAT_TOP_NAME |
Indeholder vรฆrdien af โโoverskriftsformatet for filbehandleren, som standard vil vรฆrdien vรฆre _TOP efterfulgt af filhรฅndtagsnavn. |
|
$|$OUTPUT_AUTOFLUSH |
Standard er nul; dette bruges til at tรธmme outputbufferen efter hver write() eller print(). |
|
$$ |
Vil holde det kรธrende procesnummer for Perl-tolk. |
|
$? |
Statuskode : Rรธr- og systemkald. Returstatus for den udfรธrte kommando. |
|
$&$MATCH |
Brugt i regulรฆre udtryk vil dette indeholde en streng af det sidste vellykkede mรธnstermatch. |
|
$`$ FORKAMP |
Brugt i regulรฆre udtryk, vil dette indeholde streng, der er gรฅet forud for sidste vellykkede mรธnstermatch. |
|
$'$POSTMATCH |
Brugt i regulรฆre udtryk, vil dette indeholde en streng, efterfulgt af den sidste vellykkede mรธnstermatch. |
|
$+$LAST_PAREN_MATCH |
Indeholder strengen i den sidste parentes, der matches af den sidste mรธnstersรธgning. |
|
$ |
$1, $2, $3 โฆ. Holder vรฆrdierne af mรธnsteret matchet i rรฆkkefรธlge. |
|
$[ |
Fรธrste indeks: Array, en understreng. |
|
$] |
En version af Perl. |
|
$โ |
Separatoren, der bruges til listeelementer, er som standard et mellemrum. |
|
$; |
Subscript-separator brugt i flerdimensionelle arrays |
|
$! |
I numerisk sammenhรฆng udskriver fejlnummeret. Udskriv fejlen i strengkontekst. |
|
$@ |
Vil indeholde syntaksfejlinformationen, der bruges nรฅr eval() bruges. |
|
$< |
Indeholder det rigtige UID (bruger-id) for processen, der kรธrer scriptet. |
|
$> |
Indeholder den effektive UID for processen, der kรธrer scriptet. |
|
$( |
Indeholder det rigtige GID (gruppe-id) for processen, der kรธrer scriptet. |
|
$) |
Indeholder den effektive GID for processen, der kรธrer scriptet. |
|
$^D$DEBUGGING |
Indeholder den aktuelle vรฆrdi af fejlfindingsflagene. |
|
$^C |
Holder den aktuelle vรฆrdi af flaget, nรฅr -c kommandolinjeomskifter bruges. |
|
$^F |
Maksimal systemfilbeskrivelse, som standardvรฆrdi, er sat til 2 |
|
$^I$INPLACE_EDIT |
Indeholder vรฆrdien af โโโi kommandolinjekontakt. |
|
$^M |
Speciel hukommelsespulje kan bruges, nรฅr Perl-script dรธr med en out-off hukommelsesfejl. |
|
$^O$OSNAME |
Operating systeminformation er gemt. 'Linux' til Linux-systemer, 'mswin32' til Windows systemer. |
|
$^T$ BASETIME |
Tiden, hvor scripts kรธrer i sekunder. |
|
$^W$ADVARSEL |
Den aktuelle vรฆrdi af kommandolinjekontakten โw. Advarselskontakt. |
|
$ARGV |
Navn pรฅ den aktuelle fil, nรฅr <> bruges. |
Array specielle variabler:
| Variabel | Beskrivelse |
|---|---|
|
@INC |
Indeholder en liste over stier, hvor Perl biblioteksmoduler eller scripts kan ses i, mens det aktuelle script udfรธres. Denne @INC bruges ved brug og krรฆver sรฆtninger for at se pรฅ disse stier til biblioteksmoduler. |
|
@ARGV |
Gemmer de bestรฅede kommandolinjeargumenter. |
|
@_ |
Anvendes i underrutiner, mens parametrene overfรธres til underrutinerne. |
|
@F |
Dette er det array, som inputlinjerne er lagret i, nรฅr autoopdeling -a (kommandolinjeomskifter bruges). |
Hash sรฆrlige variabler:
| Variabel | Beskrivelse |
|---|---|
|
%INC |
Filnavnet vil vรฆre nรธglerne; vรฆrdier vil vรฆre stien til disse filer. Brugt af gรธr, brug og krรฆve. |
|
%ENV |
System miljรธvariabler. |
|
%SIG |
Signals handler. |
Perl regulรฆrt udtryk
Hvad er regulรฆrt udtryk?
Perl regulรฆre udtryk er stรฆrkt nok til at matche strengmรธnstrene i et udsagn eller en gruppe af udsagn. Regulรฆre udtryk bruges mest i tekstparsing, mรธnstermatchning og meget mere baseret pรฅ kravet. Vi har visse operatorer, som er specielt brugt til regulรฆrt udtryksmรธnsterbinding =~ og !~, Disse er test- og tildelingsoperatorer.
Regulรฆrt udtryk Operatorer
Regulรฆrt udtryk Operators i Perl
- Perl Match โ m//
- Perl erstatning โ s///
- Perl Transliterate โ tr///
Fรธr vi gรฅr videre, skal vi vide nogle fรฅ ting om regulรฆrt udtryk; der er visse ting som Meta-karakterer, jokertegn i Perl Regex-syntaks.
| Char | Betydning |
|---|---|
|
\ |
Special eller tilbud |
|
* |
Match 0 eller flere tegn |
|
+ |
Match 1 eller flere tegn |
|
? |
Match 0 eller 1 tegn |
|
| |
Kan bruges til at matche alternative mรธnstre |
|
() |
Bruges til at opbevare det matchede mรธnster |
|
[] |
Sรฆt af tegn kan passeres. Bruges specifikt til numeriske og alfabeter. |
|
{} |
Bruges til at angive det antal gange, kampen kan udfรธres. |
|
^ |
Start af strengen |
|
$ |
Slut pรฅ streng |
|
\w |
Bruges til at matche et enkelt tegn eller ord, som kan vรฆre alfanumerisk inklusive "_" |
|
\W |
Match alt andet end alfanumerisk |
|
\s |
Bruges til at matche mellemrum |
|
\S |
Match alt andet end mellemrum |
|
\d |
Match numre. Ikke decimalvรฆrdier og negative vรฆrdier |
|
\D |
Match alt andet end tal. |
|
\t |
Match faneplads |
|
\n |
Match newline |
Ovenstรฅende er det sรฆt af tegn, som kan bruges under mรธnstermatching.
Lad os se nogle fรฅ eksempler.
Overvej en situation, hvor brugeren giver noget input under scriptudfรธrelsen, og vi รธnsker at kontrollere, om brugeren har indtastet et eller andet navn som input eller ej. Vi skal skrive en regulรฆr udtrykssyntaks for at udtrรฆkke dit navn og udskrive det samme.
my $userinput="Guru99 Rocks";
if($userinput=~m/.*(Guru99).*/)
{
print "Found Pattern";
}
else
{
print "unable to find the pattern";
}
Output:
Fundet mรธnster
Her har vi skrevet det regulรฆre udtryk som /.*(Guru99).*/.* matcher alle tegn i en streng. Et '.' i perl regex match refererer til ethvert tegn inklusive mellemrum.
Lad os se prรฆcis, hvordan vi kan konstruere et Regex.
Overvej et eksempel pรฅ en streng med flere ord og cifre og specielle symboler som dette "Hej alle sammen, dette er mit nummer: +91-99298373639";
Regex: /^\w+\s\w+\s\w+\s\w+\s\w+\s\w+\:\+\d+\-\d+/i
Ord mellemrum ord mellemrum ord mellemrum ord mellemrum ord mellemrum ord mellemrum specialtegn : mellemrum specialtegn+cifre specialtegn โcifre.
Perl Match Operatorer
Match-operatorerne bruges til at matche en streng i en sรฆtning eller i en variabel.
my $var="Hello this is perl";
if($var=~m/perl/)
{
print "true";
}
else
{
print "False";
}
Output:
sand
Denne lille kode vil udskrive 'sand', da perl-mรธnstermatchningen identificerer strengen i en variabel. Grundlรฆggende sรธger Perl efter teksten i // i hele strengen, selvom den finder รฉt sted, vil den returnere 'sand'. Mรธnsteret kan vรฆre hvor som helst i variablen. Vi kan prรธve at erstatte =~ med !~ for at se forskellen mellem disse to operatorer.
Perl udskiftning OperaTor
Denne operator kan bruges til at sรธge og erstatte et hvilket som helst tegn med enten null eller et andet tegn.
my $a="Hello how are you"; $a=~s/hello/cello/gi; print $a;
Output:
cello hvordan har du det
Bemรฆrk: Vi kan faktisk ogsรฅ bruge enhver mรธnstermatchende streng, som vi gjorde tidligere i denne substitutionsoperator. Her brugte vi 'gi', g-globalt, i-ignore case.
Perl Oversรฆttelse OperaTor
Dette ligner Substitution, men det bruger ingen perl regulรฆre udtryk, snarere kan vi direkte videregive vรฆrdien eller et ord, som vi รธnsker at erstatte.
my $a="Hello how are you"; $a=~tr/hello/cello/; print $a;
Output:
Hej ko er du
Perl fil I/O
Perl er designet til at manipulere filer og I/O-operationer effektivt. Perl stรธrste fordel er i filparsing og hรฅndtering af filerne. Der er mange indbyggede funktioner og operatรธrer, der bruges under filhรฅndtering i Perl.
Grundlรฆggende udfรธres filhandlinger, der udfรธres med Perl, ved hjรฆlp af FILEHANDLE. Vi er nรธdt til at definere dette FILEHANDLE under รฅbningen af โโen fil til enten at lรฆse eller skrive.
I denne Perl script tutorial lรฆrer du-
Perl ร bn fil
Vi kan รฅbne en fil ved hjรฆlp af funktionen open() tilgรฆngelig i Perl.
open(FILEHANDLE, "filename or complete path of the file");
Nu har vi รฅbnet en fil, nu opstรฅr et spรธrgsmรฅl. Er det til at lรฆse eller skrive?
Perl Lรฆs fil & Perl Skriv fil
Perl har visse tilstande, som skal bruges til at lรฆse, skrive eller tilfรธje en fil.
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");
Et par eksempler pรฅ lรฆsning af en fil:

Overvej, at vi har en perl-fil med navnet file.txt og har fรฅ linjer tekst i den. Vi skal รฅbne denne fil og udskrive den samme.
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;
Dette vil udskrive filindholdet pรฅ outputskรฆrmen.
Nu vil vi skrive et program til at oprette og skrive data til en perl-fil.

open(FH,">test.txt"); my $var=<>; print FH $var; close FH;
Dette vil skrive input tilvejebragt under kรธrslen og opretter en fil test.txt, som vil have input.
Ovenstรฅende mรฅde vil altid forsรธge at oprette en fil med navnet test.txt og skrive input til filen; vi skriver det samme for at tilfรธje filen.

open(FH,">>test.txt"); my $var=<>; print FH $var; close FH;
| Modes | Beskrivelse |
|---|---|
|
< |
Lรฆs |
|
+< |
Lรฆser og skriver |
|
> |
Opretter, skriver og afkorter |
|
+> |
Lรฆs, skriv, skab og afkort |
|
>> |
Skriver, tilfรธjer og skaber |
|
+>> |
Lรฆs, skriv, tilfรธjer og opret |
Nu hvor vi skal se, hvordan man lรฆser, skriver og tilfรธjer filer ved hjรฆlp af grundlรฆggende eksempler.
Vi vil se fรฅ flere eksempler og andre funktioner, som hjรฆlper med at forstรฅ mere om filer.
Perl Fortรฆl
Denne metode vil returnere den aktuelle position for FILEHANDLER i bytes, hvis den er angivet, ellers vil den betragte den sidste linje som positionen.
open(FH, "test.pl");
while(<FH>)
{
$a=tell FH;
print "$a";
}
Perl Sรธg
Sรธgefunktionen ligner fseek-systemkaldet. Denne metode bruges til at placere filmarkรธren til en bestemt placering ved at angive bytes efterfulgt af enten starten af โโfilmarkรธren eller slutningen af โโfilmarkรธren.
seek FH, bytes, WHENCE;
HVORNร R er positionen for filmarkรธren til at starte. Nul indstiller det fra begyndelsen af โโfilen.
Eksempel: Lad input.txt have nogle data som "Hej, det er min verden."
open FH, '+<','input.txt'; seek FH, 5, 0; # This will start reading data after 5 bytes. $/ = undef; $out = <FH>; print $out; close FH;
Output:
det her er min verden
Perl Fjern link
Unlink bruges til at slette filen.
unlink("filename or complete file path");
Hรฅndtering af mapper:
Vi kan ogsรฅ hรฅndtere mapper, hvorigennem vi kan hรฅndtere flere filer.
lad os se, hvordan man รฅbner en mappe. Vi kan bruge opendir og readdir metoderne.
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);
Dette vil udskrive alle de tilgรฆngelige filer i den mappe.
Perl-filtest og deres betydning
|
-r |
For at kontrollere, om fil/mappe kan lรฆses af den aktuelle bruger/gruppe |
|
-w |
For at kontrollere, om fil/mappe kan skrives af den aktuelle bruger/gruppe |
|
-x |
For at kontrollere, om fil/mappe kan eksekveres af den aktuelle bruger/gruppe |
|
-o |
For at kontrollere, om fil/mappe ejes af den aktuelle bruger |
|
-R |
For at kontrollere, om fil/mappe kan lรฆses af denne rigtige bruger/gruppe |
|
-W |
For at kontrollere om fil/mappe kan skrives af denne rigtige bruger/gruppe |
|
-X |
For at kontrollere om fil/mappe kan eksekveres af denne rigtige bruger/gruppe |
|
-O |
For at kontrollere, om fil/mappe ejes af denne rigtige bruger |
|
-e |
For at kontrollere, om fil/mappenavn findes |
|
-z |
For at kontrollere, om filen eksisterer og har nul stรธrrelse (altid falsk for mapper) |
|
-f |
For at kontrollere, om Entry er en almindelig fil |
|
-d |
For at kontrollere, om Entry er en mappe |
|
-l |
For at kontrollere, om Entry er et symbolsk link |
|
-S |
For at kontrollere, om Entry er en socket |
|
-p |
For at kontrollere, om Entry er et navngivet rรธr (en "FIFO") |
|
-b |
For at kontrollere, om Entry er en blok specialfil (som en monteringsbar disk) |
|
-c |
For at kontrollere, om Entry er en specialfil med tegn (som en I/O-enhed) |
|
-u |
For at kontrollere, om fil eller mappe er setuid |
|
-g |
For at kontrollere, om fil eller mappe er setgid |
|
-k |
For at kontrollere, om filen eller mappen har den sticky bit indstillet |
|
-t |
Det givne filhรฅndtag er en TTY (som ved isatty() systemfunktionen kan filnavne ikke testes af denne test) |
|
-T |
For at kontrollere, om filen ligner en "tekst"-fil |
|
-B |
For at kontrollere, om filen ligner en "binรฆr" fil |
|
-M |
For at kontrollere รฆndringsalderen (mรฅlt i dage) af filen |
|
-A |
For at kontrollere adgangsalderen (mรฅlt i dage) af filen |
|
-C |
For at kontrollere Inode-modifikationsalderen (mรฅlt i dage) af filen |
Perl subrutine
Hvad er subrutine?
Subrutiner ligner funktioner i andre programmeringssprog. Vi har allerede brugt nogle indbyggede funktioner som print, chomp, chop osv. Vi kan skrive vores egne underrutiner i Perl. Disse underrutiner kan skrives hvor som helst i programmet; det er at foretrรฆkke at placere underrutinerne enten i begyndelsen eller i slutningen af โโkoden.

Eksempel pรฅ subrutiner
sub subroutine_name
{
Statementsโฆ; # this is how typical subroutines look like.
}
Nu hvor vi ved, hvordan man skriver en underrutine, hvordan fรฅr vi adgang til den?
Vi skal have adgang til eller kalde en subrutine ved at bruge subrutinenavnet foran med '&'-symbolet.
sub display
{
print "this is a subroutine";
}
display(); # This is how we call a subroutine
Sender Perl-parametre og Perl-argumenter
Subrutiner eller perl-funktion er skrevet for at placere den genanvendelige kode i den. Det meste af den genbrugelige kode krรฆver, at parametre sendes til subrutinen. Her vil vi lรฆre, hvordan vi kan videregive argumenter til subrutinen.
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 er den passerede vรฆrdi
@_ er en speciel array-variabel, som gemmer de argumenter, der sendes til underrutinerne.
Perl Shift
Vi kan ogsรฅ bruge 'shift' nรธgleord, som flytter en parameter ad gangen til en variabel eller $_[0],$_[1]... som er et individuelt element i @_ array
sub display
{
my $var=shift;
print "$var is passed";
}
display("hello");
Output:
hej er bestรฅet
Subrutiner bruges typisk i objektorienteret programmering og ogsรฅ pรฅ steder, hvor du kan have mere genanvendelig kode, der skal placeres.
Hovedfunktionaliteten af โโunderrutiner er at udfรธre en opgave og returnere resultatet af den genbrugelige kode.

Vi kan returnere en vรฆrdi fra subrutine ved hjรฆlp af nรธgleordet return.
sub add
{
my $a=shift;
my $b=shift;
return($a+$b);
}
my $result=add(5,6);
print $result;
Output:
11
$result vil indeholde vรฆrdien af โโde tilfรธjede $a og $b.
Vi kan ogsรฅ sende hashes og array direkte til subrutinen.
sub hash
{
my %hash=@_;
print %hash;
}
%value= ( 1=>'a', 2=>'b');
&hash(%value);
Output:
1a2b
Vi kan ogsรฅ returnere en hash eller et array.
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:
Inde i Sub-rutine2b1aEfter Sub-rutine call2b1a
Perl-format
Perl har en mekanisme, som vi kan bruge til at generere rapporter. Ved at bruge denne funktion kan vi lave rapporter prรฆcis som vi รธnsker, mens vi udskriver pรฅ outputskรฆrmen eller i en fil. Et simpelt format kan skrives ved hjรฆlp af printf- eller sprintf-funktioner, der er tilgรฆngelige i Perl.
printf "%05d\n", 30;
Dette vil inkludere foranstillede nuller foran nummer 30, hvilket gรธr en total optรฆlling af cifre til 5. Det samme kan bruges til sprintf.
sprintf "%05d\n", 30; # This will print the same as printf.
Ved at bruge printf og sprintf kan vi fรฅ de fleste Perl-formater. Ved indberetninger vil det vรฆre vanskeligt at gennemfรธre.
================================================== =========================
Navn Adresse Alder Telefon
================================================== =========================
Krishna Chennai 24 929309242
Shruthi Chennai 24 929309232
Ovenstรฅende er et eksempel pรฅ rapporter, som vi skal udskrive pรฅ samme mรฅde i Perl. Dette kan opnรฅs ved at bruge perl printf og perl sprintf. Det kan effektivt implementeres ved hjรฆlp af format.
Et format kan erklรฆres pรฅ nedenstรฅende mรฅde.
format FORMATNAME=FORMATLIST.
Her vil vi bruge en bestemt metode, skrive til at udskrive dataene pรฅ outputskรฆrmen eller i filen.
| Symbol | Beskrivelse |
|---|---|
|
@ |
Bruges til at reprรฆsentere starten af โโmarkholderen |
|
> |
Hรธjrejustering af tekst |
|
< |
Venstrejustering af tekst |
|
| |
Center justering |
|
# |
Numerisk, hvis der er angivet flere #. Antager som en kommentar, hvis enkelt # er angivet |
|
. |
Decimaltegnet |
|
^ |
Start af feltholder kan ogsรฅ bruges til multiline og ogsรฅ til word-wrap |
|
~ |
Linjen skal vรฆre tom, hvis variablen er tom |
|
@* |
Flere linjer. |
($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
.
Udfรธr koden for at se outputtet.
Vi bruger symbolet @ til at angive starten pรฅ feltholderen eller strengen, '<' hvert tegn.
Vi bruger STDOUT til at udskrive pรฅ standardoutput. Vi kan รฆndre dette til filhรฅndtering, som vi bruger til at skrive data ind i filen.
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
Vi kan erstatte '<' til '>' eller '|' for at รฆndre justeringen af โโteksten. STDOUT_TOP bruges til at designe formatets header. Vi kan ogsรฅ bruge det samme med filbehandler ved hjรฆlp af FH_TOP( FH er filbehandleren). Dette vil udlรฆse formatet til den fil, som vi arbejder med pรฅ.
Perl kodningsstandarder
Hver programmรธr vil have sin egen sans for at skrive koden ved hjรฆlp af bestemte standarder; disse standarder bรธr vรฆre velkendte nok til, at andre programmรธrer kan forstรฅ og understรธtte koden korrekt.
Kodningsstandarder i Perl
At skrive kode er enkelt og nemt. Problemet opstรฅr, nรฅr det skal vedligeholdes pรฅ senere stadier. Korrekte retningslinjer og kodningsstandarder skal fรธlges, mens koden skrives. Perl definerer ogsรฅ visse standarder, som vil vรฆre nyttige for programmรธrer til at skrive kode. Det er tilrรฅdeligt at indlรฆse 'streng' og 'advarselsmodul', mens du skriver koden. Hvert af disse moduler har sin egen betydning. Strict vil fรฅ os til at erklรฆre variablen fรธr brug og vil ogsรฅ fortรฆlle, om der er et blottet ord i din kode. Advarselsmodulet kan alternativt bruges ved at sende '-w'-muligheden til Perl-fortolkeren i shebang. Advarsler udskrives pรฅ outputskรฆrmen.
#!/usr/bin/perl โw
Nedenfor er nogle fรฅ lister over standarder.
- Brug modulet 'streng' og 'advarsler'.
- Fjern variabel, som ikke er i brug.
- Variablenavne skal vรฆre forstรฅelige for andre brugere. Eks: $navn, @filData osv.
- Dokumentation er pรฅkrรฆvet under kodning af et script.
- Undlad at hardkode nogen vรฆrdier, prรธv hellere at hente dem dynamisk eller bed brugeren om at indtaste under runtime.(Filsti, Filnavne).
- Maksimer genbrug af kode. Prรธv at sรฆtte den genbrugelige kode i underrutiner.
- Det betyder, at fulde navne skal angives for underrutiner.
- Underrutiner skal skrives med passende kommentarer og dokumentation.
- Initialiser altid variabler.
- Tjek altid returkoderne for systemopkald. ร
bning af en fil kan ske eller ikke, at have en returkode her vil vise fejlstatus, hvis filen ikke eksisterer.
Eks: รฅben(FH,
- Subrutine skal altid returnere en vรฆrdi.
- ร bn krรธllet i samme linje.
- Enkelt linje BLOCK kan placeres i en enkelt linje med krรธllet.
- Brug etiketter under LOOPSEN, det ville vรฆre nemt at forlade lรธkken, nรฅr det er nรธdvendigt.
- Brug understregning, mens lange sรฆtninger af ord skrives som et variabelnavn eller underrutine.
- Prรธv at bruge simpelt regex, mens du koder.
Perfekt eksempel med kodningsstandarder:
#######################################################################
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 fejlhรฅndtering
Hvad er en undtagelse?
En undtagelse er en hรฆndelse, der opstรฅr under programafviklingen, og som vil suspendere eller afslutte dit program.
Fejlhรฅndtering
Fejlhรฅndtering er en, som enhver programmรธr skal passe pรฅ under programmeringen. Perl tilbyder ogsรฅ fejlhรฅndteringsteknikker, hvormed vi kan fange fejlen og hรฅndtere dem i overensstemmelse hermed.
Fejlhรฅndtering i Perl
Der er mange mรฅder at kontrollere for fejl i programmet. Vi skal undersรธge returkoderne for den funktion, som vi bruger kode. Hvis vi er i stand til at hรฅndtere disse returkoder korrekt, sรฅ kan det meste af fejlhรฅndteringen opnรฅs.
Hvad vil returnere i tilfรฆlde af systemopkald?
I tilfรฆlde af systemkald vil returneringsstatus blive gemt i to specielle variabler $? Og $!
$! โ Dette vil fange fejlnummeret eller fejlnummeret forbundet med fejlmeddelelsen.
$? โ Dette vil indeholde return status system() funktionen.
Brug af Perl-operator eller Logical
Vi kan bruge logisk eller operatรธr til fejlhรฅndtering under brug af systemopkald.
ex:
open(FH,"<test.txt");
Dette vil รฅbne filen i lรฆsetilstand, hvis filen eksisterer.
Hvad hvis filen mangler?
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-funktionen kan hรฅndtere fatale fejl, kompileringstidsfejl, runtime-fejl og de fejl, der afslutter din kode pรฅ et tidspunkt.
Perl Eval funktion kan have en kodeblok eller et udtryk. Evals betragter alt, der er placeret i den, som en streng.
Overvej en situation med at kalde en underrutine, som ikke er defineret i scriptet. I denne situation afsluttes scriptet og angiver "udefineret underrutine &XYZ, denne fejl kan hรฅndteres i eval-funktionen.
Der er mange anvendelser af evals blok; en sรฅdan brug er, nรฅr vi รธnsker at indlรฆse modulet, som er specifikt for operativsystemet under kรธrsel.
Eks: Divider med nul forรฅrsager en fatal fejl; for at hรฅndtere dette kan vi placere koden i evals blok.
$a=5;
$b=0;
eval
{
'$result=$a/$b';
}
if($@)
{
print "$@"; # All the error codes returned by evals will get stored in $@.
}
Output:
syntaksfejl ved C:\Users\XYZ\Text.pl linje 8, nรฆr โ)
{โ
Udfรธrelse af C:\Users\XYZ\Text.pl afbrudt pรฅ grund af kompileringsfejl.
Eksempel: eval ved hjรฆlp af perl die-sรฆtning.
sub test
{
die "Dieing in sub test \n";
}
eval
{
test();
};
print "Caught : $@\n";
Output:
Fanget: Dรธende i deltest
Brug af Perl Try
Perl understรธtter ikke try, catch og endelig kodeblokke som andre programmeringssprog. Vi kan stadig bruge dem ved at indlรฆse et eksternt Perl-modul.
brug Prรธv::Tiny;
Ved at bruge dette kan vi placere din kode i prรธveblok og fange fejlen i advarselsblok.
I stedet for $@ brugt i eval Prรธv::Tiny bruger $_.
# hรฅndtere fejl med en catch-handler
try
{
die "Die now";
}
catch
{
warn "caught error: $_"; # not $@
};
Bruger endelig.
my $y;
try
{
die 'foo'
}
finally
{
$y = 'bar'
};
try
{
die 'Die now'
}
catch
{
warn "Returned from die: $_"
}
finally
{
$y = 'gone'
};
Output:
foo pรฅ C:\Users\XYZ\Text.pl linje 4.
Vi kan bruge try, catch og endelig pรฅ denne mรฅde.
prรธv { # statement }
catch {# statement }
endelig { # statement };
Or
try
{
# statement
}
finally
{
# statement
};
Output:
Or
try
{
# statement
}
finally
{
# statement
}
catch
{
# statement
};
Output:
Perl Socket programmering
Hvad er en stikkontakt?

Socket er et medium, hvorigennem to computere kan interagere pรฅ et netvรฆrk ved at bruge netvรฆrksadresse og porte.
Antag, at A (Server) og B (Client) er to systemer, som skal interagere med hinanden ved hjรฆlp af Sockets til at kรธre nogle programmer.
For at implementere dette skal vi oprette sockets i bรฅde A (Server) og B (Client), A vil vรฆre i modtagetilstand og B vil vรฆre i afsendertilstand.
A (server):
Her รธnsker serveren at modtage en forbindelse fra B (Client) og udfรธre nogle opgaver og sende resultatet tilbage til B (Client). Nรฅr vi udfรธrer koden, forsรธger operativsystemet i A at skabe en socket og binder en port til den socket. Sรฅ vil den lytte fra afsenderen, som er B.
B (klient).
Her รธnsker klienten at sende et eller andet program fra sit system til A (Server) for en vis behandling. Nรฅr vi udfรธrer koden, forsรธger operativsystemet i B at skabe en socket til at kommunikere med A (Server), B skal angive IP-adressen og portnummeret pรฅ A, som B รธnsker at forbinde til.
Hvis dette gรฅr godt, vil begge systemer interagere for at udveksle oplysningerne gennem รฉn port. Perl understรธtter ogsรฅ socket-programmering.
Perl har en indbygget API, hvorigennem sockets kan implementeres. For at gรธre det nemt, er der mange CPAN-moduler, som vi bruger til at skrive socket-programmer.
Serverdrift:
- Opret stikkontakt
- Indbindingsstik med adresse og port
- Lyt til stikket pรฅ den portadresse
- Accepter klientforbindelserne, som forsรธger at oprette forbindelse ved hjรฆlp af serverens port og IP
- Udfรธr operationer
Klient Operationer:
- Opret stikkontakt
- Opret forbindelse til server ved hjรฆlp af dens portadresse
- Udfรธr operationer

socket.io
Dette er et modul til socket-programmering, som er baseret pรฅ objektorienteret programmering. Dette modul understรธtter ikke INET-netvรฆrkstypen, der bruges i netvรฆrk.
IO::Socket::INET:
Dette modul understรธtter INET-domรฆne og er bygget pรฅ IO::Sockets. Alle de tilgรฆngelige metoder i IO::Sockets nedarves i INET-modulet.
Klient og server ved hjรฆlp af TCP-protokol:
TCP er en forbindelsesorienteret protokol; vi vil bruge denne protokol til socket-programmering.
Fรธr vi gรฅr videre, lad os se, hvordan vi kan oprette et objekt til IO::Socket::INET-modulet og oprette en socket.
$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";
Den nye metode i IO::Socket::INET-modulet accepterer en hash som inputparameter til subrutinen. Denne hash er foruddefineret, og vi skal blot give vรฆrdierne til de nรธgler, som vi vil bruge. Der er en liste over nรธgler, der bruges af denne hash.
|
PeerAddr |
Fjernvรฆrtsadresse |
|
PeerHost |
Synonym for PeerAddr |
|
PeerPort |
Fjernport eller tjeneste |
|
LocalAddr |
Lokal vรฆrtsbindingsadresse |
|
localhost |
Synonym for LocalAddr |
|
LocalPort |
Lokal vรฆrtsbindingsport |
|
Proto |
Protokolnavn (eller nummer) |
|
Type |
Socket typen |
|
Lyt |
Kรธstรธrrelse for at lytte |
|
GenbrugAddr |
Indstil SO_REUSEADDR fรธr binding |
|
Genbruge |
Indstil SO_REUSEADDR fรธr binding |
|
Genbrugsport |
Indstil SO_REUSEPORT fรธr binding |
|
Broadcast |
Indstil SO_BROADCAST fรธr binding |
|
Timeout |
Timeoutvรฆrdi for forskellige operationer |
|
MultiHomed |
Prรธv alle adresser for multihomed-vรฆrter |
|
Blokering |
Bestem, om forbindelsen vil vรฆre blokeringstilstand |
Server.pl
use IO::Socket;
use strict;
use warnings;
my $socket = new IO::Socket::INET (
LocalHost => 'localhost',
LocalPort => '45655',
Proto => 'tcp',
Listen => 1,
Reuse => 1,
);
die "Could not create socket: $!n" unless $socket;
print "Waiting for the client to send datan";
my $new_socket = $socket->accept();
while(<$new_socket>) {
print $_;
}
close($socket);
Client.pl
use strict; use warnings; use IO::Socket; my $socket = new IO::Socket::INET ( PeerAddr => 'localhost', PeerPort => '45655', Proto => 'tcp', ); die "Could not create socket: $!n" unless $socket; print $socket "Hello this is socket connection!n"; close($socket);
Bemรฆrk:
I socket-programmering bliver vi nรธdt til at udfรธre Server.pl fรธrst og derefter client.pl individuelt i forskellige kommandoprompter, hvis vi kรธrer pรฅ lokal vรฆrt.
Hvad er Perl-moduler og -pakker
Moduler og pakker er tรฆt forbundet med hinanden og er uafhรฆngige. Pakke: En Perl-pakke er ogsรฅ kendt som navneomrรฅde, og som har alle unikke variabler brugt som hashes, arrays, skalarer og underrutiner. Modul: Modul er en samling genanvendelig kode, hvor vi skriver subrutiner i den. Disse moduler kan indlรฆses i Perl-programmer for at gรธre brug af underrutinerne skrevet i disse moduler.
Hvad er Perl-moduler?
Standardmoduler vil blive installeret under installationen af โโPerl pรฅ ethvert system. CPAN: Omfattende Perl Archive Network โ Et globalt lager af Perl-moduler. Vores egne tilpassede Perl-moduler, som kan skrives af os. Grundlรฆggende vil et modul, nรฅr det indlรฆses i et hvilket som helst script, eksportere alle dets globale variabler og underrutiner. Disse underrutiner kan ringe direkte, som om de var deklareret i selve scriptet. Perl-moduler kan skrives med filtypen .pm til filnavnet Ex : Foo.pm. Et modul kan skrives ved at bruge 'pakke Foo' i starten af โโprogrammet.
Grundlรฆggende 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;
Ingen output
For at bruge dette Perl-modul er vi nรธdt til at placere det i den aktuelle mappe.
Vi kan indlรฆse et Perl-modul ved at bruge require eller bruge hvor som helst i koden. Den stรธrste forskel mellem krรฆve og brug er, krรฆve indlรฆst modul under runtime og brug belastninger under kompileringstiden.
#!/usr/bin/perl require Arithmetic; print Arithmetic::add(5,6); print Arithmetic:: subtract (5,6);
Her, i ovenstรฅende eksempel, fรฅr vi adgang til underrutinerne ved hjรฆlp af fuldt kvalificeret modulnavn.
Vi kan ogsรฅ fรฅ adgang til pakken ved at bruge 'brug Arithmetic'.
Eksportรธr:
Dette modul har en standardfunktionalitet for importeringsmetoder.
#!/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-array kan bruges til at sende en liste over variabler og underrutiner, som som standard vil blive eksporteret til modulet, der ringer.
@EXPORT_OK array kan bruges til at videregive en liste over variabler og underrutiner, som vil blive eksporteret efter behov, hvor brugeren skal specificere under indlรฆsning af modulet.
#!/usr/bin/perl use Arithmetic qw(subtract); print add(5,6); print subtract (5,6);
Som standard vil tilfรธje subrutine blive eksporteret. Subtractmetoden eksporteres ikke, hvis den ikke er angivet under indlรฆsning af modulet.
Objektorienteret programmering i Perl
I dette afsnit lรฆrer vi, hvordan du opretter Perl-objektorienterede moduler. Lad os fรธrst se, hvad objektet er? Et objekt er en instans, hvor vi kan fรฅ adgang til, รฆndre og lokalisere nogle data i ethvert Perl-modul. Dette er intet andet end at fรฅ din eksisterende Perl-pakke, variabler og subrutiner til at fungere som klasse, objekter og metoder i forhold til andre programmeringssprog.
Opret klasse
Vi ved allerede, hvordan man opretter moduler fra det forrige emne. Formรฅlet med klassen er at gemme metoder og variabler. Et Perl-modul vil have underrutiner, som er metoder. Vi skal have adgang til disse variabler og subrutineobjekter.
Perl konstruktรธr
En konstruktรธr i Perl er en metode, som vil udfรธre og returnere os en reference med modulnavnet tagget til referencen. Dette kaldes som velsignelse af klassen. Vi bruger en bestemt variabel til at velsigne en perl-klasse, som er velsigne.
#!/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;
Den nye metode, der bruges som konstruktรธr for en klasse, Denne konstruktรธr vil skabe et objekt for os og vil vende tilbage til scriptet, som kalder denne konstruktรธr.
#!/usr/bin/perl use Arithmetic; my $obj= Arithmetic->new(); my $result= $obj->add(5,6); print "$result"; $result = $obj->subtract(6,5); print "$result";
Her skal vi forstรฅ, hvordan objektet er skabt. Hver gang vi forsรธger at oprette et objekt til klassen, skal vi bruge klassens fulde navn. Antag, hvis perl-klassen er placeret i nogle lib\Math\Arithmetic.pm. Og hvis vi รธnsker at fรฅ adgang til denne perl-klasse fra lib-mappen, skal vi angive hele stien til klassen, mens vi kalder scriptet ind.
brug lib::Matematik::Aritmetik;
my $obj = lib::Math::Arithmetic->new();
Sรฅdan foregรฅr objektskabelsen i Perl.
@INC:
Hvordan ved Perl-scriptet, hvor biblioteksmodulet findes? Perl kender kun til den aktuelle mappe for scriptet og Perl's indbyggede bibliotekssti. Nรฅr vi bruger et Perl-modul, som ikke er placeret i den aktuelle mappe eller Perl-bibliotekssti, vil scriptet altid fejle. Om @INC, dette er et array, som rummer alle mappestier, hvor det skal lede efter Perl-modulerne. Prรธv at udfรธre denne kommando og se, hvad der bliver outputtet.
perl โe "print @INC"
Dette vil give noget output, og det er stien, hvor lib-modulerne vil vรฆre tilgรฆngelige. Nรฅr vi bruger et nyt biblioteksmodul, er vi nรธdt til at bede Perl, tolk, om at se nรฆrmere pรฅ det sรฆrlige sted, hvor Perl-modulet er tilgรฆngeligt.
push(@INC, "PATH TO YOUR MODULE");
Gรธr dette som din fรธrste linje kode. Dette vil bede din tolk om at se nรฆrmere pรฅ den vej. eller brug
lib Arithmetic; # List here is your Perl Module location
Perl Destructor
Destruktoren af โโet objekt kaldes som standard i slutningen og fรธr dit script afsluttes. Dette bruges til at รธdelรฆgge dine objekter fra hukommelsen.
PERL V/s Shell Scripting
- Programmering i Perl forรฅrsager ikke portabilitetsproblemer, hvilket er almindeligt, nรฅr man bruger forskellige skaller i shell-scripting.
- Fejlhรฅndtering er meget let i Perl
- Du kan nemt skrive lange og komplekse programmer pรฅ Perl pรฅ grund af dens enorme omfang. Dette er i modsรฆtning til Shell, der ikke understรธtter navnerum, moduler, objekt, arv osv.
- Shell har fรฆrre genanvendelige biblioteker til rรฅdighed. Intet sammenlignet med Perls CPAN
- Shell er mindre sikker. Det kalder eksterne funktioner (kommandoer som mv, cp osv. afhรฆnger af den anvendte shell). Tvรฆrtimod udfรธrer Perl nyttigt arbejde, mens han bruger interne funktioner.
Hvordan PERL bruges i automationstestning
Perl er meget udbredt inden for automatisering. Det er mรฅske ikke de bedste programmeringssprog i verden, men det er bedst egnet til visse typer opgaver. Lad os diskutere, hvor og hvorfor Perl bruges til Test af automatisering.
Opbevaringstest
Hvad er opbevaring? Data gemt i filer.
Antag, at vi har en lagerrelateret Test sag hvor vi skal skrive data pรฅ รฉn partition, lรฆse det & verificere at dataene er skrevet korrekt.
Dette kan gรธres manuelt, men kan en manuel tester udfรธre det samme 10000 gange? Det bliver et mareridt! Vi har brug for automatisering
Bedste vรฆrktรธj til at automatisere alt relateret til opbevaring er Perl pรฅ grund af dets filhรฅndteringsteknikker, REGEX og kraftfuld filparsing, som bruger mindst eksekveringstid sammenlignet med andre programmeringssprog.
Hvorfor skal vi teste opbevaring? Tรฆnk pรฅ store datacentre, hvor data vil flyde kontinuerligt fra et system til et andet system med 1000-vis af registreringer, der bliver gemt i sekundet. Det er vigtigt at teste robustheden af โโen sรฅdan lagermekanisme.
Mange virksomheder som HP, Dell, IBM og mange serverproducenter bruger Perl som en grรฆnseflade til at teste funktionalitet i Storage og Networking domรฆner. NetApp er et sรฅdant firma, der fuldstรฆndig arbejder pรฅ Storage og bruger Perl som programmeringssprog til at automatisere testcases.
Hvis du er interesseret i Perl Automation, vil det vรฆre tilrรฅdeligt at lรฆre om Storage & Networking Concepts.
Server- og netvรฆrkstest:
Server- og netvรฆrkstest ved hjรฆlp af Perl
PERL er meget udbredt til serveroppetid og overvรฅgning af ydeevne.
Overvej et datacenter, som har 100 vรฆrter (servere). Du skal oprette forbindelse til hver vรฆrt, udfรธre nogle kommandoer eksternt. Du vil ogsรฅ genstarte systemet og tjekke, hvornรฅr det kommer online igen.
At udfรธre denne opgave manuelt for alle 100 vรฆrter vil vรฆre et mareridt. Men vi kan nemt automatisere dette ved hjรฆlp af PERL
Design trin for at opnรฅ denne ovenstรฅende automatisering ved hjรฆlp af PERL
- Tag input fra filen om vรฆrtsoplysninger som (IP, brugernavn og adgangskode).
- Brug Net::SSH2 til at oprette forbindelse til hvert system og etablere en kanal til at udfรธre kommandoerne.
- Udfรธr sรฆt af nรธdvendige kommandoer, f.eks.: ls, dir, ifconfig,ps osv.
- Genstart systemet.
- Vent i 10 minutter, indtil systemet kommer op.
- Ping systemet ved hjรฆlp af Net::Ping-modulet og udskriv status.
Vi vil kode ovenstรฅende scenarie.
Lad os tage en fil kaldet Input.txt, som gemmer den komplette information om alle de vรฆrter, hvor vi skal forbinde og udfรธre kommandoen.
Input.txt
192.168.1.2 root-adgangskode
192.168.1.3 root-adgangskode
192.168.1.4 root root123
HostCheck.pl
use Net::SSH2;
use Net::Ping;
use strict;
use warnings;
my $ping = Net::Ping->new(); # Creating object for Net::Ping
my $SSHObj = Net::SSH2->new(); #Creating object for Net::SSH2
open( FH, "Input.txt" ); # Opening file and placing content to FH
my @hosts = <FH>;
my $ip;
my @ips;
foreach (@hosts)
{
if ( $_ =~ /(.*)\s+(\w+)\s+(.*)/ ) #Regex to get each info from file
{
$ip = $1;
my $user = $2;
my $password = $3;
$SSHObj->connect($ip);
print "Connecting to host -- $ip --Uname:$user --Password:$password\n";
my $status = $SSHObj->auth_password( $user, $password );
print "$status\n";
die("unable to establish connection to -- $ip") unless ($status);
my $shell = $SSHObj->channel();
print "$_\n" while <$shell>;
$shell->blocking(1);
$shell->pty('tty');
$shell->shell();
sleep(5);
#Executing the list of command on particular host. Can be any command
print $shell "ls \n";
print "$_\n" while <$shell>;
print $shell "ps \n";
print "$_\n" while <$shell>;
print $shell "dir \n";
print "$_\n" while <$shell>;
print $shell "init 6\n"; #rebooting the system
push( @ips, $ip );
}
}
sleep 600;
foreach (@ips)
{
if ( $ping->ping($_) )
{
print "$_ is alive.\n" if $ping->ping($_);
}
else
{
print "$_ is not still up --waiting for it to come up\n";
}
}
Web test
Perl er ikke kun begrรฆnset til lager- og netvรฆrkstest. Vi kan ogsรฅ udfรธre webbaseret test ved hjรฆlp af PERL. WWW-Mekanisรฉr er รฉt modul brugt til webtest. Dybest set vil den ikke starte nogen browser for at teste funktionaliteten af โโwebapplikationer, snarere bruger den kildekoden til HTML-siderne.
Vi kan ogsรฅ udfรธre browserbaseret test vha Selenium IDE, RC, web-driver. Perl er understรธttet for Selenium.
\n"; #dette vil holde den resterende streng, efter at patter-match er fรฆrdig.
Print "





