Perl Tutorial: Variable, Array, Hashes med programmeringseksempel

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 Description
\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:

Sainath 33Krishna24Shruthi25Sainath33Krishna24Shruthi25

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

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

$_$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 Description

@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 Description

%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 Description

<

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 Description

@

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 "