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.

Oversigt over programmeringssprog

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

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

Simpelt eksempel pรฅ Perl

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

Fordele ved Perl

Ulemper ved Perl

  • Sammenlignet med andre programmeringssprog er Perl mest kraftfuldt til teksthรฅndtering og parsing
  • Dette er et fortolket sprog med hurtig eksekveringstid, da der ikke er behov for at kompilere et Perl-script
  • Enkel og nem at programmere og forstรฅ.
  • Den er objektorienteret.
  • CPAN-bibliotek letter udviklingen af โ€‹โ€‹Perl (vi vil lรฆre mere om dette senere i emnet).
  • Anvendes i webudvikling til for det meste Payment Gateways.
  • Bruges i automatisering og til at teste det meste af netvรฆrks- og lagerrelaterede ting.
  • Der er minimal GUI-understรธttelse sammenlignet med andre programmeringssprog.
  • Du skal henvise til komplekse biblioteksmoduler, som ikke er sรฅ lette at forstรฅ (Vรฆr ikke bange, nรฅr du fรธrst ved, hvordan du gรธr tingene, alt bliver nemt).
  • At forstรฅ komplekse mรธnstre krรฆver erfaring.

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

Sรฅdan downloades Perl

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

UnixPERL Tutorial for begyndere - Komplet vejledning Allerede installeret Leveres forudinstalleret med Perl, selvom du muligvis skal opdatere til den nyeste version.
Mac OS PERL Tutorial for begyndere - Komplet vejledning Allerede installeret OSX leveres med Perl forudinstalleret, selvom du muligvis skal opdatere den til den nyeste version
WindowsPERL Tutorial for begyndere - Komplet vejledning Skal installeres To muligheder er tilgรฆngelige

  1. Strawberry Perl er en open source binรฆr distribution af Perl til Windows OS. Det inkluderer en compiler og forudinstallerede moduler, der giver mulighed for at installere XS CPAN-moduler direkte fra CPAN
  2. ActiveState perl giver en binรฆr distribution af Perl (for mange platforme) sรฅvel som deres egen Perl-pakkehรฅndtering (PPM)

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.

Opdater PERL pรฅ Linux

Opdater PERL pรฅ Linux

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.

Sรฅdan installeres Perl pรฅ Windows

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

Sรฅdan installeres Perl pรฅ Windows

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.

Installerer Perl pรฅ Windows

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.

Installerer Perl pรฅ Windows

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

Installerer Perl pรฅ Windows

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.

PERL installation pรฅ Windows

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.

Installation af cpan minus moduler

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

Installation af cpan minus moduler

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

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

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.

  1. Alle skalarnavne begynder med en $. Det er nemt at huske at prรฆfikse hvert navn med $. Tรฆnk pรฅ det som en $skalar.
  2. 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"
  3. 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

  1. Numbers
  2. 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

Antal variabler i Perl

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

Floating-point literals i Perl

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.

Typer af strenge i Perl

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

  1. my
  2. lokale
  3. 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!

PERL Tutorial for begyndere - Komplet vejledning

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

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.

Array-funktioner i Perl

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.

Hashes i Perl

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.

Eksempel pรฅ Hash i Perl

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.

Perl betingede erklรฆringer

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.

Til slรธjfe i Perl

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.

Mens loop i Perl

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

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

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:

Lรฆser fil i Perl

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.

Skrive fil i Perl

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.

Fil Tilfรธj handling i Perl

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.

Subrutine i PERL

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.

PERL Tutorial for begyndere - Komplet vejledning

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.

Perl-format

Eksempel pรฅ en rapport:

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

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

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?

PERL Tutorial for begyndere - Komplet vejledning

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

Klient-server Operationer i Perl

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

Introduktion til PERL-programmering

  • 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

Lagertest ved hjรฆlp af Perl

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

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

  1. Tag input fra filen om vรฆrtsoplysninger som (IP, brugernavn og adgangskode).
  2. Brug Net::SSH2 til at oprette forbindelse til hvert system og etablere en kanal til at udfรธre kommandoerne.
  3. Udfรธr sรฆt af nรธdvendige kommandoer, f.eks.: ls, dir, ifconfig,ps osv.
  4. Genstart systemet.
  5. Vent i 10 minutter, indtil systemet kommer op.
  6. 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 "

Opsummer dette indlรฆg med: