Handledning för Perl

Vad är Perl?

Perl är ett högnivå, allmänt, tolkat, dynamiskt programmeringsspråk. Perl är en term som står för "Practical Extraction and Reporting Language" även om det inte finns någon akronym för Perl. Det introducerades av Larry Wall 1987. Perl-språket var speciellt utformat för textredigering. Men nu används det i stor utsträckning för en mängd olika ändamål, inklusive Linux-systemadministration, nätverksprogrammering, webbutveckling, etc.

Översikt över programmeringsspråk

Låt oss uttrycka det på ett enkelt sätt. Medan datorer bara förstår 0:or och 1:or (binärt språk/maskinspråk/ [lågnivåspråk]), är det väldigt svårt att programmera på ett binärt språk för oss människor. Perl är ett programmeringsspråk som använder naturliga språkelement, ord som används i vanligt engelska språk och är därför lättare att förstå av människor [språk på hög nivå]. Nu finns det ett problem; datorer kan inte förstå högnivåspråk, vilket vi människor lätt kan förstå. För det behöver vi något som kan översätta högnivåspråket till lågnivåspråk. Här kommer tolk till vår hjälp. Tolken är en mjukvara som konverterar programmet skrivet på högnivåspråket till lågnivåspråk för att datorn ska förstå och utföra instruktionerna som är skrivna i programmet. Därför är Perl en tolkat programmeringsspråk.

Var används Perl?

Kraften i Perl skriptspråk kan implementeras på många områden. Den mest populära användningen av Perl är i webbutveckling. Perl används också för att automatisera många uppgifter i webbservrarna, och andra administrationsjobb, det kan automatiskt generera e-postmeddelanden och städa system. Perl används fortfarande för sitt ursprungliga syfte, dvs att extrahera data och generera rapporter. Den kan producera rapporter om resursanvändning och kontrollera säkerhetsproblem i ett nätverk. På grund av denna anledning har Perl blivit ett populärt språk som används inom webbutveckling, nätverk och bioinformatik också. Förutom allt detta kan perl också användas för CGI-programmering.

Perl kan också användas för att skapa och manipulera bilder. Förutom att nätverk via telnet, FTP, etc., skapande av grafiskt användargränssnitt, VLSI-elektronik och att skapa e-postfilter för att minska skräppost är några användningsfall av Perl.

Perl är också känt för implementering av OOP (objektorienterad programmering) praxis och stöder alla former av arv (enkel, multipel & diamant), polymorfism och inkapsling. Perl är tillräckligt flexibel för att stödja både processuella och OOP-praxis samtidigt. Perl har också extra moduler som gör att du kan skriva eller använda/återanvända kod inskriven Python, PHP, PDL, TCL, Octave, Java, C, C++, Basic, Ruby och Lua i ditt Perl-manus. Det betyder att du kan kombinera Perl med dessa extra programmeringsspråk snarare skriva om befintlig kod.

Tillämpningar av programmeringsspråket Perl

Tillämpningar av programmeringsspråket Perl

Varför använda Perl?

Det är sant att det finns andra programmeringsspråk som kan användas för att göra alla saker som har nämnts ovan, varför ska du då specifikt använda Perl? Perl är väldigt lätt att lära sig, speciellt om du har en bakgrund inom datorprogrammering. Perl designades för att vara lätt för människor att skriva och förstå snarare än att göra det enkelt att bearbeta med datorer. Den använder reguljära uttryck. Dess naturliga språkstil skiljer sig från andra programmeringsspråk som använder specifik grammatik och syntaxer; Därför är Perl mycket flexibel och ålägger dig inte något särskilt sätt att tänka ut en lösning eller ett problem. Perl är extremt portabel. Det kan köras på alla operativsystem som har Perl-tolken installerad, så det är plattformsoberoende. Allt Linux Operating Systems kommer installerade med Perl, så du kan starta Perl-kodning i Linux direkt. Detta är till skillnad från Shell-skript, där koden ändras med smaken av Linux-distribution som används, vilket gör den mindre och mindre portabel Små specifika uppgifter i Perl blir mycket enkla och snabba. Genom den här Perl-handledningen för nybörjare kommer du att lära dig hur du kan koda små, snabba program för specifika uppgifter. Låt oss ta ett enkelt exempel på det klassiska Hello World-programmet som används för att börja lära sig alla programmeringsspråk som har UNIX som sina rötter:

Exempel: Perl hej världen

Enkelt exempel på Perl

#!/usr/bin/perl
print "Hello, world!";

Produktion:

Hej världen!

Ovanstående två rader kod kommer att skriva ut Hej, värld! Nu var det inte för enkelt och snabbt? Studenter med kunskaper i C, C++ kommer att veta att det krävs många fler rader kod för att få samma utdata på dessa språk.

Du kanske undrar varför Perl är så känd på webben. Det är enkelt då det mesta som händer på webben är av TEXT och Perl är väldigt bra på textbearbetning. Om vi ​​jämför Perl med något av språken kommer Perl att vara det bästa språket som är bra i filhantering, textbehandling och utdatarapportering

En av de bästa fördelarna med Perl är att det är det gratis att använda

Perl-gemenskapen är övertygad om att programvara ska vara fritt tillgänglig, fritt modifierbar och fritt distribuerbar. Flera volontärer från Perl community strävar efter att göra programmeringsspråket så bra som möjligt.

Fördelar och nackdelar med Perl

Alla tillgångar på ett och samma ställe Nackdelar:

Fördelar med Perl

Nackdelar med Perl

  • Jämfört med andra programmeringsspråk är Perl mest kraftfull för texthantering och parsning
  • Detta är ett tolkat språk med snabb exekveringstid eftersom det inte finns något behov av att kompilera ett Perl-skript
  • Enkelt och lätt att programmera och förstå.
  • Den är objektorienterad.
  • CPAN-biblioteket underlättar utvecklingen av Perl (vi kommer att lära oss mer om detta senare i ämnet).
  • Används i webbutveckling för mestadels Payment Gateways.
  • Används i automation och för att testa det mesta av nätverks- och lagringsrelaterade saker.
  • Det finns minimalt stöd för GUI jämfört med andra programmeringsspråk.
  • Du måste hänvisa till komplexa biblioteksmoduler som inte är så lätta att förstå (var inte rädd när du väl vet hur man gör sakerna, allt kommer att bli lätt).
  • Att förstå komplexa mönster kräver erfarenhet.

Låt oss börja

Med tillräckligt med kunskap om Perls historia och grundläggande begrepp inom datorprogrammering som krävs för kodning i Perl, är det dags att vi tar ett dyk och sätter igång med Perl. Nästa kapitel kommer att lära dig hur du kan ställa in Perl på ditt system och göra dig redo för kodningsresan i Perl. Denna Perl-skripthandledning kommer att ta Linux som OS som eleverna kommer att använda för kodning i Perl.

Ladda ner och installera Perl – Windows, Mac och Linux

Hur får man tag i Perl?

Goda nyheter du har förmodligen det!

Men om du inte redan kan hitta det på ditt system kan du fortfarande få det gratis.

För att ta reda på om du redan har Perl installerat, gå in på kommandoraden och skriv: perl -v

Hur man laddar ner Perl

Kommandot visar versionen av Perl om den är installerad. I det här fallet är versionen v5.14.2. Men om inte... få inte panik...

UnixPERL handledning för nybörjare - Komplett guide Redan installerad Levereras förinstallerat med Perl men du kan behöva uppdatera till den senaste versionen.
Mac OS PERL handledning för nybörjare - Komplett guide Redan installerad OSX kommer med Perl förinstallerat, även om du kan behöva uppdatera den till den senaste versionen
WindowsPERL handledning för nybörjare - Komplett guide Behöver installera Två alternativ finns tillgängliga

  1. Strawberry Perl är en binär distribution med öppen källkod av Perl för Windows OS. Den innehåller en kompilator och förinstallerade moduler som erbjuder möjligheten att installera XS CPAN-moduler direkt från CPAN
  2. ActiveState perl tillhandahåller en binär distribution av Perl (för många plattformar), såväl som deras egen Perl-pakethanterare (PPM)

Uppdatera Perl på Linux:

Om du behöver uppdatera Perl-versionen anger du bara en enda kommandorad

sudo apt-get installation perl

och slappna av. Resten kommer att tas om hand. Se bara till att du har en aktiv internetanslutning.

Uppdatera PERL på Linux

Uppdatera PERL på Linux

Installera perl för Windows:

Ladda först ner Active Perl från denna länk. Följ dessa steg för att installera ActivePerl på Windows systemet. Se skärmdumparna nedan för detsamma.

Steg 1: När du har laddat ner installationsprogrammet och startat installationen kommer du att se fönstret nedan, klicka på nästa för att fortsätta.

Hur man installerar Perl på Windows

Steg 2: Acceptera licensavtalet för att fortsätta installationen.

Hur man installerar Perl på Windows

Steg 3: Nedan finns olika paket som kommer att installeras. Som standard kommer alla att väljas. Det enda som skiljer sig är PPM (Perl Package Manager). Detta är verktyget från Active Perl för att installera externa Perl-moduler eller -bibliotek i ditt system. Klicka på Nästa för att fortsätta.

Installerar Perl på Windows

Steg 4: Det här är olika typer av Perl-tillägg som kan användas för Perl. För det mesta kommer vi att använda .Pl, .Plx och .Pm för Perl. Perl-moduler använder i princip .Pm som filtillägg för att referera till en biblioteksfil. Välj alla alternativ och klicka på knappen Nästa.

Installerar Perl på Windows

Steg 5: Klicka på knappen Installera för att fortsätta med installationen.

Installerar Perl på Windows

Steg 6: När det är installerat, kör kommandot 'Perl –v' för att kontrollera om Perl har installerats på ditt system.

PERL-installation på Windows

Det finns många saker som behöver diskuteras för att ställa in Perl-miljön i både Linux och Windows, eftersom det inte kommer att finnas många biblioteksfiler i den här installationen. Du måste installera dem manuellt. Du kan installera dessa manuellt med CPAN(Comprehensive Perl Archive Network) eller antingen PPM som bara fungerar för perl-fönster. Men dessa filer är inte obligatoriska för att börja koda i Perl.

Förutom den här Windows-inställningen kan du använda Windows 10:s nya funktion i Linux-undersystemet över Windows och använd den för att köra perl-kod

Första Perl-programmet

Hello world!

Perl Exempel: Hello World

#!/usr/bin/perl -w
#this is just a comment…
print "Hello World";

Oroa dig inte om du inte förstår den här texten. Allt kommer att vara klart snart. Kom igen och ta en titt på det per rad:

#!/usr/bin/perl		

Detta berättar för Operating System för att köra den här filen med programmet som finns på /usr/bin/perl Vissa IDE:er behöver inte den här raden. Om det är nödvändigt måste du här skriva en väg till din tolk. Kom ihåg! Denna speciella rad måste vara i början av ditt program och måste börja från #! använd varningar; Detta är ett annat specialkommando som säger åt tolken att visa alla varningar, dvs -w som aktiverar varningar globalt.

print "Hello World";		

Utskriftsinstruktionen skriver text till skärmen. Semikolonet i slutet av raden talar om för perl-tolken att instruktionen är klar. Du måste sätta ett semikolon i slutet av varje instruktion i Perl-kod. Notera citattecken(“). Det är nödvändigt för utskriftsinstruktioner. Spara skriptet ovan som firstprog.pl

On Windows

Om du har Strawberry installerat kan du helt enkelt klicka på Kör. Du kan också köra kommandoradsgränssnitt och skriva på konsolen:

C:\> perl path\firstprog.pl		

eller, om perl.exe inte finns i din väg:

C:\> c:\perl\bin\perl.exe firstprog.pl		

På Linux/Unix

Du behöver bara öppna terminalen och skriva:

perl firstprog.pl		

Om du inte kan köra programmet, se till att du har rätt att köra det. Skriv i terminalen:

chmod +x firstprog.pl		

Ditt program är nu körbart och redo att köras. För att utföra, skriv:

./firstprog		

Installera cpan minus moduler

Moduler är uppsättningar av koder som används för att utföra uppgifter som utför vanliga operationer i flera program. Om du använder perl-moduler behöver du inte skriva om koderna för att utföra samma operation. Perl kan använda sådana externa bibliotek med koder. Ett av de bästa biblioteken är CPAN. Det står för Comprehensive Perl Archive Network och innehåller en stor mängd Perl-moduler som du kan använda. Det är en gemenskap eller ett nätverk av ett stort antal utvecklare som bidrar med sådana moduler. Genom att installera stöd för CPAN-moduler i din perl-modul kan du använda CPAN-modulerna och göra ditt arbete enklare. De flesta Perl-moduler är skrivna i Perl, vissa använder XS (de är skrivna i C) så kräver en C-kompilator (det är lätt att få den här inställningen – få inte panik. Moduler kan ha beroenden av andra moduler (nästan alltid på CPAN) och kan inte installeras utan dem (eller utan en specifik version av dem. Det är värt att noggrant läsa dokumentationen för alternativen nedan). hämta, packa upp, bygg och installera moduler från CPAN för att göra installationen av andra moduler enklare (du kommer att tacka oss senare för att installera). App-cpanminus perl-moduler, i kommandoraden typ:

cpan App::cpanminus

cpan App::cpanminus Se till att du har internetanslutning medan perl-moduler laddas ner och installeras.

Installerar cpan minus-moduler

Installera nu valfri modul:

cpan –i <Module_Name>.		

Låt oss se ett exempel på installation av en modul File::Data(Det är ett gränssnitt för att komma åt fildata).

Installerar cpan minus-moduler

Perl Variabel

Nu ska vi prata om variabler. Du kan föreställa dig variabelliknande typ av behållare som innehåller ett eller flera värden. När det väl har definierats förblir namnet på variabeln detsamma, men värdet eller värdena ändras om och om igen.

Det finns 3 typer av variabler:

Typer av variabler i Perl

Typer av variabler i Perl

De enklaste är skalärer, och detta är vårt ämne idag

Skalär variabel

Denna typ av variabel har ett enda värde.

Dess namn börjar med ett dollartecken och en Perl-identifierare (det är namnet på vår variabel).

Skalär variabel i Perl

Skalär variabel i Perl

Namnkonvention

Om du är bekant med andra programmeringsspråk, då skulle du veta att det finns vissa regler om namngivning av variabler. På samma sätt har Perl tre regler för att namnge skalärer.

  1. Alla skalära namn börjar med en $. Det är lätt att komma ihåg att prefixet varje namn med $. Se det som en $skalär.
  2. Som PHP. efter det första tecknet $, som är speciellt i Perl, är alfanumeriska tecken, dvs a till z, A till Z och 0 till 9 tillåtna. Understreck är också tillåtet. Använd understreck för att dela upp variabelnamnen i två ord. "Men det första tecknet kan inte vara ett nummer"
  3. Även om siffror kan vara en del av namnet kan de inte komma direkt efter $. Detta innebär att första tecknet efter $ kommer att vara antingen ett alfabet eller understreck. De som kommer från C/C++ bakgrund bör omedelbart kunna känna igen likheten. Exempel

Perl-exempel:

$var;
$Var32;
$vaRRR43;
$name_underscore_23;

Dessa är dock inte lagliga skalära variabelnamn.

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 allmänna regeln säger att när Perl bara har en av något, är det en skalär. Skalärer kan läsas från enheter, och vi kan använda dem till våra program.

Två typer av skalära datatyper

  1. Numbers
  2. Strängar

Numbers:

I denna typ av skalär data kan vi specificera:

  • heltal, det är helt enkelt heltal, som 2, 0, 534
  • Flyttal, det är reella tal, som 3.14, 6.74, 0.333

Talvariabler i Perl

Observera: I allmänhet ser Perl-tolken heltal som flyttal. Till exempel, om du skriver 2 i dina program, kommer Perl att se det som 2.0000

Heltals bokstaver:

Den består av en eller flera siffror, eventuellt föregås av ett plus eller minus och innehåller understreck.

Perl-exempel:

0;
-2542;
4865415484645          #this also can be written with underscores (for clarity) : 4_865_415_484_645

Som du kan se - det är inget speciellt. Men tro mig, detta är den vanligaste typen av skalärer. De finns överallt.

Flyttals bokstaver:

Den består av siffror, eventuellt minus, decimalkomma och exponent.

Perl-exempel:

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

Flyttals bokstaver i Perl

Oktal, hexadecimal och binär representation:

Det är ett alternativ till decimalsystemet. Tillåt mig att visa dig oktal, hexadecimal och binär representation. En kort tabell presenterar all viktig information om denna konstiga stil:

Representationen Bas Fortsatte av
Octal 8 0 (noll)
Hexadecimal 16 0x
Binary 2 0b

Perl-exempel:

255;                               # 255 in decimal notation
0377;                                   # 255 in octal notation
0xff;                                   # 255 in hexadecimal notation
0b11111111;                             # 255 in binary notation

Alla dessa värden för Perl betyder detsamma. Perl lagrar inte värdena i samma format. Den kommer internt att konvertera dessa hexadecimala, binära, oktala till decimala värden.

Uppdraget är den vanligaste operationen på en skalär, och det är väldigt enkelt. Perl använder för det likhetstecknet. Den tar ett värde av uttrycket från höger sida och sätter detta värde till vår variabel.

Låt oss ta en titt på exempel:

$size=15;             # give $size value of 15
$y = -7.78;           # give $y value of -7.78

Dessutom kan du lägga in variabeln inte bara ett tal, utan också ett uttryck.

$z = 6 + 12               # give $z value of 18

Strängar

Strängar: Det är också en väldigt enkel typ av skalär.

Den maximala längden på en sträng i Perl beror på mängden minne som datorn har. Det finns ingen gräns för storleken på strängen, valfri mängd tecken, symboler eller ord kan utgöra dina strängar. Den kortaste strängen har inga tecken. Den längsta kan fylla hela systemminnet. Perl-program kan skrivas helt i 7-bitars ASCII-teckenuppsättning. Perl tillåter dig också att lägga till valfri 8-bitars eller 16-bitars teckenuppsättning aka. icke-ASCII-tecken inom strängliteral. Perl har även lagt till stöd för Unicode UTF-8.

Typer av strängar i Perl

Precis som siffror finns det två olika typer av strängar:

  • Enstaka citattecken sträng bokstaver
  • Double citat strängbokstavar

Literala strängar med ett citat

Enstaka citattecken används för att omsluta data som du vill ska tas bokstavligt. Ett kort exempel och allt borde vara klart:

Perl-exempel:

#!/usr/bin/perl 
$num = 7;
$txt = 'it is $num';
print $txt;

Produktion:

det är $num

Här på grund av enstaka citattecken läggs inte värdet på $num in och de bokstavliga tecknen '$','n', 'u' & 'm' till värdet på $txt

Double-citerade strängbokstavar

Double citattecken används för att omsluta data som måste interpoleras innan bearbetning. Det betyder att escaped tecken och variabler inte bara bokstavligen infogas i senare operationer, utan utvärderas på plats. Escape-tecken kan användas för att infoga nyrader, flikar osv.

Perl-exempel:

$num = 7; 
$txt = "it is $num"; 
print $txt;

Produktion:

det är 7

Här på grund av dubbla citattecken läggs värdet på $num till värdet på $txt

Double-citat interpolerar skalära och arrayvariabler, men inte hash. Å andra sidan kan du använda dubbla citattecken för att interpolera delar av både arrayer och hash.

Mystisk \n

Tänk på följande program

Perl-exempel:

print "hello \n";

Produktion:

hallå

Perl visar inte bara "hej\n", utan bara "hej". Varför? Eftersom '\n' är ett speciellt tecken och betyder att du vill gå till en ny rad samtidigt som du visar texten i ditt program. skriv ut "hej\n ny rad"; Nästa fråga - finns det något annat speciellt tecken? Ja det är de! Men oroa dig inte - bara några få. Kontrollera tabellen nedan

Konstruera BESKRIVNING
\n ny linje
\r avkastning
\t fliken
\f formmatning
\b backsteg
\a bell
\e fly
\ 007 vilket oktalt ASCII-värde som helst (här, 007 = klocka)
\x7f något hexadecimalt värde (här, 7f = radera)
\\ omvänt snedstreck
\ ” dubbelt citat
\l nästa bokstav med gemener
\L alla följande bokstäver med små bokstäver tills \E
\u versal nästa bokstav
\U versaler alla följande bokstäver tills \E
\E Avsluta \L, \U

Jag vet, det finns inte "bara ett fåtal"... Men tro mig, du måste bara veta

Strängar Variabel

Det är samma operation, som vi ser i nummertilldelning. Perl hämtar vår sträng från den högra sidan av likhetstecknet och sätter denna sträng till en variabel.

Perl-exempel:

$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;

Produktion:

handledning315

Som du kan se kan du lägga siffror och strängar i samma variabler. Det finns ingen klass av variabler.

Strängsammansättning (period):

Sammankopplingsoperatorn "." förenar två eller flera strängar. Komma ihåg! Om strängen innehåller citattecken, vagnretur, omvänt snedstreck, måste alla dessa specialtecken escapes med ett omvänt snedstreck.

Perl ' ' variabel Exempel:

#!/usr/bin/perl
$a = "Tom is";
$b = "favorite cat";
$c = $a ." mother's ". $b;
print $c;

Produktion:

Tom är mammas favoritkatt

Strängarna

"$a", "$b", sammanfogas och lagras i "$c" med hjälp av "." operatör.

I slutet…

Konvertering mellan Numbers och strängar:

Som du vet konverterar Perl automatiskt mellan nummer till sträng efter behov. Hur vet Perl vad vi behöver just nu? Det här är enkelt - allt beror på operatorn (vi pratar om operatorer senare, nu, acceptera bara att det finns många operatorer, olika för siffror och strängar) Om en operator förväntar sig ett nummer kommer Perl att använda värdet som ett tal . Om en operatör förväntar sig en sträng kommer Perl att använda värdet som en sträng. Med andra ord - du behöver inte oroa dig för den här typen av konvertering. Kort exempel och allt ska vara klart:

Perl-exempel:

$string = "43";
$number = 28;
$result = $string + $number;
print $result;

Produktion:

71

värdet på $string konverteras till ett heltal och läggs till värdet på $number.

Resultatet av tillägget, 71, tilldelas $result.

Omfattning av en variabel – Access Modifiers

Vi kan deklarera en skalär var som helst i programmet. Men du måste ange en åtkomstmodifierare

Det finns 3 typer av modifierare

  1. my
  2. lokal
  3. vår

Min: Med detta kan du deklarera vilken variabel som helst som är specifik inom blocket. dvs inom de lockiga hängslen.

#!/usr/bin/perl 
my $var=5;
if(1)
{ 
my $var_2 =$var;
}
print $var_2;

Ingen produktion

Resultatet av programmet blir ingenting!

PERL handledning för nybörjare - Komplett guide

I exemplet ovan kommer du att se att det finns två variabler deklarerade, den ena är inuti if-blocket ($var_2) och den andra är utanför If-blocket ($var). Variabeln som deklareras utanför blocket kommer att vara tillgänglig för if-blocket men variabeln som deklarerades inuti if-blocket kommer inte att vara tillgänglig för det yttre programmet.

Lokalt: Genom att använda detta kan vi faktiskt maskera samma variabelvärden till olika värden utan att faktiskt ändra det ursprungliga värdet på variabeln, anta att vi har en variabel $a för vilken värdet är tilldelat 5, du kan faktiskt ändra värdet på den variabeln genom att omdeklarera samma variabel med hjälp av lokala nyckelord utan att ändra det ursprungliga värdet på variabeln som är 5. Låt oss se hur detta fungerar med ett exempel.

#!/usr/bin/perl
$var = 5;
{
local $var = 3;
print "local,\$var = $var \n";
}
print "global,\$var = $var \n";

Utdata från ovanstående program kommer att vara på detta sätt.

lokal, $var = 3

globalt, $var = 5

På så sätt kan vi ändra värdet på variabeln utan att påverka det ursprungliga värdet.

Vår: När en variabel har deklarerats med åtkomstmodifieraren "vår" kan den användas i hela paketet. Anta att du har en Perl-modul eller ett paket test.pm som har en variabel deklarerad med vårt omfång. Denna variabel kan nås i alla skript som kommer att använda det paketet.

Om du menar allvar med programmering i Perl bör du börja ditt program med

#!/usr/local/bin/perl

använd strikt;

Detta hjälper dig att skriva bättre och renare kod. 'använd strikt' aktiverar strikt pragma som gör att du deklarerar dina variabler med mitt sökord.

Detta är en bra programmeringspraxis

#!/usr/local/bin/perl
use strict;
$var = 10;
print "$var";

Resultat: Fel

#!/usr/local/bin/perl
use strict;
my $var = 10;
print "$var";

Produktion:

10

Perl Array

Vad är Perl Array?

En Array är en speciell typ av variabel som lagrar data i form av en lista; varje element kan nås med hjälp av indexnumret som kommer att vara unikt för varje element. Du kan lagra siffror, strängar, flytande värden, etc. i din array. Det här ser bra ut, så hur skapar vi en array i Perl? I Perl kan du definiera en array med tecknet '@' följt av namnet du vill ge. Låt oss överväga att definiera en array i Perl.

min @array;

Så här definierar vi en array i Perl; du kanske tänker på hur vi behöver lagra data i den. Det finns olika sätt att lagra data i en array. Detta beror på hur du ska använda det.

my @array=(a,b,c,d);
print @array;

Produktion:

abcd

Detta är en array med 4 element i den.

Arrayindexet börjar från 0 och slutar till sin maximala deklarerade storlek, i det här fallet är den maximala indexstorleken 3.

Perl Array Exempel

Perl Array Exempel

Du kan också deklarera en array på ovanstående sätt; den enda skillnaden är att den lagrar data i en array och anser att ett vitt utrymme är avgränsaren. Här betyder qw() citatord. Betydelsen av denna funktion är att skapa en lista med ord. Du kan använda qw på flera sätt för att deklarera en 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;

Produktion:

abcdpqrsvxyz

Anta att du vill tilldela ett värde till 5:anth element i en array, hur ska vi göra det.

$array [4] ='e';

Sekventiell array

Sekventiella arrayer är de där du lagrar data sekventiellt. Anta att du vill lagra 1-10 siffror eller alfabet az i en array. Istället för att skriva alla bokstäver kan du prova något som nedan –

@numbers= (1..10);
print @numbers;                   #Prints numbers from 1 to 10;

Produktion:

12345678910

Perl-arraystorlek

Vi har en array som redan är tillgänglig, och du vet inte vad storleken på den arrayen är, så vad är det möjliga sättet att hitta det.

@array= qw/a b c d e/;
print $size=scalar (@array);

Kan vi få storleken på en array utan att använda funktioner? Ja det kan vi.

@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

Produktion:

5

5

Dynamic Array

Metoden ovan för att deklarera en array kallas statiska arrayer, där du vet storleken på en array.

Vad är Dynamic Array?

Dynamiska arrayer är de som du deklarerar utan att ange något värde på dem. Så när exakt lagrar vi värden i den matrisen? Enkelt, vi lagrar dem under körtid. Här är ett enkelt program för det.

Vi kommer att använda några inbyggda Perl-funktioner för att utföra denna uppgift.

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

Produktion:

Detta är

typ av dyn

MIC

rr

y

Dela funktionen delar upp innehållet i strängen i en array baserat på avgränsaren som tillhandahålls till den. Denna funktion kommer också att eliminera avgränsaren från strängen, i det här fallet är det 'a';

Push, Pop, shift, unshift för Perl-arrayer:

Dessa funktioner kan användas i Perl för att lägga till/ta bort till arrayelement.

  • Perl Push: lägger till arrayelement i slutet av en befintlig array.
  • Perl Pop: tar bort det sista elementet från en array.
  • Perl Shift: tar bort det första elementet från en array.
  • Perl Unshift: lägger till ett element i början av en array.

Array-funktioner i Perl

Låt oss se ett exempel där vi kan använda funktionerna nedan.

@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";

Produktion:

1:a: Mån Tis Ons

2:a vid tryck: Mån Tis Ons Tors

3:a vid oväxling: Fre Mån Tis Ons Tors

4:e när pop : fre mån tis ons

5:e vid skift: Mån Tis Ons

Perl Hashes

Varför behöver vi Hash?

Vi har redan lärt oss om skalärer och arrayer i tidigare avsnitt.

Vad exakt gör skalärer? Den lagrar bara heltal och strängar.

Vad exakt gör arrays? Det är en samling skalärer, där du kommer åt varje element i en array med hjälp av index. Men är det här en bra idé att använda en array när du har hundratals och tusentals poster? Vi kommer att glömma vilket index som har vilket värde. För att övervinna denna situation har vi något som perl-hash.

Vad är hashes?

En hash kan också innehålla så många skalärer som arrayen kan hålla. Den enda skillnaden är att vi inte har något index utan vi har nycklar och värden. En hash kan deklareras, börjar med % följt av namnet på hashen. Låt oss se ett exempel på hur vi kan definiera en Perl-hash och hur vi kan skilja detta från array

Betrakta ett exempel på tre personer och deras åldrar är representerade i en array.

@array=('Sainath',23,'Krishna',24,'Shruthi',25);        #This is how an array looks.
print @array;

Produktion:

Sainath33Krishna24Shruthi25

På så sätt är det svårt att veta individuella åldrar eftersom vi måste komma ihåg både indexplatser för namn och ålder för alla personer. Det kan vara enkelt när du har 3 namn, men när du har 1000 eller fler? Du vet svaret.

Hashes i Perl

Detta kan vi övervinna med hjälp av en hash.

Exempel på hash:

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.

Produktion:

Sainath33Krishna24Shruthi25Sainath33Krishna24Shruthi25

Vi har nu deklarerat en hash, toppen!! Men hur kommer vi åt eller skriver ut det? Varje element i hash bör nås med tillhörande nyckel som det kommer att tilldelas ett värde för. Så det finns en en-en-mappning mellan var och en av nyckeln och värdet i hashen.

För att skriva ut en persons ålder behöver du bara komma ihåg namnet på den personen.

print $hash{'Krishna'};          # This how we should access a hash. Key enclosed within {}.

Du kanske har undrat varför jag använde $hash{KeyName}, kom ihåg att en hash är en samling skalärer igen. Så vi kan använda $ som representerar skalär för att komma åt varje hashelement.

Exempel på Hash i Perl

Obs: Varje nyckel i hash bör vara unik, annars kommer den att åsidosätta ditt värde, som tilldelades tidigare.

Hur kan vi tilldela en hash till en annan hash? Enkelt, på samma sätt som vi gör för

Vi kan även skriva ut hela hash.

%hash=( 'Tom' => 23);
%newHash=%hash; # Assigning hash to a new hashprint %newHash; 
print %newHash;

Produktion:

Tom23

Lägg till Perl Hashes

Som du kan se har vi redan en hash %newHash, och nu måste vi lägga till fler poster i den.

$newHash{'Jim'}=25;
$newHash{'John'}=26;
$newHash{'Harry'}=27;
print %newHash;

Produktion:

Jim25John26Harry27

Perl Delete-tangent

Du kanske vill ta bort en post från en hash. Så här kan vi göra det.

delete $newHash{'Jim'};#This will delete an entry from the hash.

Ta bort är en inbyggd funktion i Perl. Här kommer vi att se ett exempel på att tilldela en hash till en array.

@array=%newHash;
print "@array";

Obs! När du skriver ut en hash eller när du lagrar hash i en array. Ordningen kan alltid skilja sig åt. Det är inte alltid samma sak.

Vi kan bara tilldela nycklar eller värden för en hash till en array.

@arraykeys= keys(%newHash);
@arrayvalues=values(%newHash);
print "@arraykeys\n";
print "@arrayvalues\n";    # \n to print new line.		

För att ta bort alla poster i hashen kan vi direkt tilldela hashen till null.

%newHash=();# Detta kommer att omdefiniera hashen utan poster.

Perl villkorliga uttalanden

Vi kan använda villkorliga uttalanden i Perl. Så, vad är villkorliga uttalanden? Villkorliga uttalanden är de där du faktiskt kontrollerar att vissa omständigheter är uppfyllda i din kod.

Tänk på ett exempel, du köper några frukter och du gillar inte att priset är mer än 100 spänn. Så här är regeln 100 spänn.

Perl stöder två typer av villkorliga uttalanden; de är om och om inte.

Perl If

Om kodblock kommer att exekveras, när villkoret är sant.

Perl villkorliga uttalanden

my $a=5;
if($a==5)
{
   print "The value is $a";
}

Produktion:

5

Perl om annat

Det här ser bra ut. Låt oss tänka på en situation där $a inte är 5.

my $a=10;
if($a==5)
{
    print "The values is $a ---PASS";
}
else
{
    print "The value is $a ---FAIL";
}

Produktion:

Värdet är 10 — FAIL

På så sätt kan vi bara kontrollera ett tillstånd åt gången. Är det en begränsning? Nej, du kan också styra olika förhållanden med 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";
}

Produktion:

Exekverat elsif-block – Värdet är 5

I ovanstående fall kommer elsif-blocket att exekveras eftersom $a är lika med 5.

Det kan finnas situationer där både if- och elsif-kodblocken kommer att misslyckas. I det här scenariot kommer kodblocket else att exekveras. Du kan faktiskt eliminera else-kodkontrollen om du inte vill inkludera.

Perl Nested If

I det här fallet kan du använda if-kodblocket i ytterligare ett if-kodblock.

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";
    }

Produktion:

Inuti 1st else block – Värdet är 11

Kör samma kod genom att ändra värdet på $a; du kan ta reda på resten.

Perl Om inte

Du har redan en idé om vad om gör (om villkoret är sant kommer det att exekvera kodblocket). Om inte är motsatt till if, såvida inte kodblock kommer att exekveras om villkoret är falskt.

my $a=5;
unless($a==5)
{
   print "Inside the unless block --- The value is $a";
}
else
{
   print "Inside else block--- The value is $a";
}

Produktion:

Inuti 1st else block – Värdet är 5

Gissa vad som blir resultatet. Du har rätt!!!!!. Utdata kommer att vara utskriftssatsen för else-blocket. På grund av villkoret i om inte kodblocket är sant, kom ihåg att såvida inte blocket exekveras endast om villkoret är falskt. Ändra värdet på $a och kör koden så ser du skillnaden.

Perl Använder if

$a= " This is Perl";
if($a eq "SASSDSS"){
print "Inside If Block";
}
else
{
print "Inside else block"
}

Produktion:

Inuti annat block

Använder om inte

$a= " This is Perl";
unless($a eq "SASSDSS"){
print "Inside unless Block";
}
else
{
print "Inside else block"
}

Produktion:

Inuti om inte Block

Perl Loops – Kontrollstrukturer

Perl stöder kontrollstrukturer som liknar andra programmeringsspråk. Perl stöder fyra typer av kontrollstrukturer för, foreach, while och tills. Vi använder dessa satser för att upprepade gånger exekvera viss kod.

För loop Perl

För kodblocket kommer att exekveras tills villkoret är uppfyllt. Låt oss ta ett exempel på hur man Perl loopar en array.

my @array=(1..10);
for(my $count=0;$count<10;$count++)
{
    print "The array index $count value is $array[$count]";
    print "\n";
}

Produktion:

Värdet för matrisindex 0 är 1

Värdet för matrisindex 1 är 2

Värdet för matrisindex 2 är 3

Värdet för matrisindex 3 är 4

Värdet för matrisindex 4 är 5

Värdet för matrisindex 5 är 6

Värdet för matrisindex 6 är 7

Värdet för matrisindex 7 är 8

Värdet för matrisindex 8 är 9

Värdet för matrisindex 9 är 10

Här, i för () uttryck, finns det många påståenden inkluderade. Det finns en mening för var och en av dem.

för (initiering; villkor; inkrementering)

Här är ett annat sätt att använda för.

for(1..10)
{
    print "$_ n";
    print "\n";
}

Produktion:

1n

2n

3n

4n

5n

6n

7n

8n

9n

10n

Perl Foreach

För varje påstående kan användas på samma sätt som för; den största skillnaden är att vi inte har någon tillståndskontroll och inkrementering i detta.

Låt oss ta samma exempel med foreach perl.

my @array=(1..10);
foreach my $value (@array)
{  
	print " The value is $value\n";
}

Produktion:

Värdet är 1

Värdet är 2

Värdet är 3

Värdet är 4

Värdet är 5

Värdet är 6

Värdet är 7

Värdet är 8

Värdet är 9

Värdet är 10

Foreach tar varje element i en array och tilldelar det värdet till $var för varje iteration. Vi kan också använda $_ för detsamma.

my @array=(1..10);
foreach(@array)
{
    print " The value is $_ \n"; # This is same as the above code.
}

Produktion:

Värdet är 1

Värdet är 2

Värdet är 3

Värdet är 4

Värdet är 5

Värdet är 6

Värdet är 7

Värdet är 8

Värdet är 9

Värdet är 10

Detta ser bra ut för att komma åt arrayer. Vad sägs om hashes, hur kan vi få hashnycklar och värden med hjälp av foreach?

Vi kan använda foreach för att komma åt nycklar och värden för hashen genom att loopa den.

För slinga i Perl

my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25);
foreach my $key (keys %hash)
{
print "$key \n";
}

Produktion:

Mickey

Tom

Jerry

Du kanske undrar varför vi använde Keys i foreach(). Keys är en inbyggd funktion i Perl där vi snabbt kan komma åt hashens nycklar. Hur är det med värderingar? Vi kan använda värdefunktionen för att komma åt värden för 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";
}

Produktion:

värdet är 24

värdet är 23

värdet är 25

Perl While

Perl While-slingan är en kontrollstruktur, där kodblocket kommer att exekveras tills villkoret är sant.

Kodblocket avslutas endast om villkoret är falskt.

Låt oss ta ett exempel för Perl While loop.

Medan loop i Perl

Här är ett problem som kommer att kräva input från användaren och som inte avslutas förrän numret som anges 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"

Produktion:

Gissa ett tal mellan 1 och 10

9

Gissa ett tal mellan 1 och 10

5

Gissa ett tal mellan 1 och 10

7

Du gissade lyckotalet 7

I exemplet ovan kommer while-villkoret inte att vara sant om vi anger annan inmatning än '7'.

Om du ser hur while fungerar här, kommer kodblocket endast att köras om villkoret om ett tag är sant.

Perl gör-under tiden

Do while loop kommer att köras minst en gång även om villkoret i while-sektionen är falskt.

Låt oss ta samma exempel genom att använda gör while.

$guru99 = 10;
 do {
 print "$guru99 \n";
 $guru99--;
 } 
 while ($guru99 >= 1);
 print "Now value is less than 1";

Produktion:

10

9

8

7

6

5

4

3

2

1

Nu är värdet mindre än 1

Perl tills

Tills kodblock liknar om inte i ett villkorligt uttalande. Här kommer kodblocket endast att exekveras om villkoret i tills blocket är falskt.

Låt oss ta samma exempel som vi använde för ett tag.

Här är ett problem som kommer att kräva input från användaren och som inte avslutas förrän namnet angetts som annat än 'sai'.

print "Enter any name \n";
 my $name=<STDIN>;
 chomp($name);
 until($name ne 'sai')
 {
    print "Enter any name \n";
    $name=<STDIN>;
    chomp($name);
 }

Produktion:

Ange valfritt namn sai

Perl gör-tills:

Gör tills kan endast användas när vi behöver ett villkor som är falskt, och det bör exekveras minst en gång.

print "Enter any name \n";
 my $name=<STDIN>;
 chomp($name);
 do
 {
     print "Enter any name \n";
     $name=<STDIN>;
    chomp($name);
 }until($name ne 'sai');

Produktion:

Ange valfritt namn Howard

Ange valfritt namn Sheldon

Ange valfritt namn sai

Kör medan, gör-under, tills och gör-tills exempelkoder för att se skillnaden.

Perl Operator

Vad är Operator?

Operators på datorspråk indikerar en åtgärd som kan utföras på någon uppsättning variabler eller värden som datorn kan förstå. Perl har införlivat det mesta Operators från C-språket. Perl har många operatörer jämfört med andra programmeringsspråk. Operators kategoriseras som aritmetiska, logiska, relationella och tilldelningsoperatorer.

Aritmetik Operators:

Aritmetiska operatorer är de som kan användas för att utföra vissa grundläggande matematiska operationer. Dessa aritmetiska operatorer är binära operatorer där vi behöver två argument för att utföra en grundläggande operation. Vi kan också använda unära operatorer för andra grundläggande operationer; du kan se skillnaden i exemplen nedan.

Operator BESKRIVNING Exempelvis

+

Additionsoperation som används för att lägga till två värden eller variabler

hålla värden

$x=5+6; # eller

$y=6;

$z=$x+$y;

-

Subtraktionsoperator som används för att subtrahera två värden eller variabler som innehåller värden

$x=6-5; # eller

$y=6;

$z=$x-$y;

*

Multiplikationsoperator som används för att multiplicera två värden eller variabler som innehåller värden

$x=6*5; # eller

$y=6;

$z=$x*$y;

/

Divisionsoperator som används för att dividera två värden eller variabler som innehåller värden

$x=36/6; # eller

$y=6;

$z=$x/$y;

**

Den exponentiella operatorn som används för att tillhandahålla exponent och få värdet.

Ex: 22 = 43 = 27

$x=5**5; # eller

$x=4;

$y=2;

$z=$x**$y;

%

Modulusoperator som används för att få påminnelsen vid uppdelning av två värden eller variabler som innehåller värden

$x=5%2; # eller

$x=10;

$y=2;

$z=$x % $y;

++

Enär additionsoperator för att öka värdet på en variabel med 1

$x=5;

$x++;

Or

++$x;

-

Unär subtraktionsoperator för att minska värdet på en variabel med 1

$x=5;

$x–; # efterminskning

Or

–$x;# före minskning

Exempel för att slutföra alla ovanstå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");

Produktion:

Addera av 10 och 2 är 12

Sub av 10 och 2 är 8

Mul av 10 och 2 är 20

Div 10 och 2 är 5

Exp på 10 och 2 är 100

Mod av 10 och 2 är 0

Uppdrag Operators:

Tilldelningsoperatorer tilldelar helt enkelt värden till variabler, men det finns en sak till som vi måste komma ihåg här, tilldelningsoperatorer kommer också att utföra aritmetiska operationer och tilldela det nya värdet till samma variabel som operationen utförs på.

Operator BESKRIVNING Exempelvis

+=

Adderingsoperator som används för att lägga till och tilldela värdet till samma variabel

$x=4;

$x+=10;

-=

Subtraktionsoperator som används för att subtrahera och tilldela värdet till samma variabel

$x=4;

$x-=10;

*=

Multiplikationsoperator som används för att addera och tilldela värdet till samma variabel

$x=4;

$x*=10;

/=

Divisionsoperator som används för att dividera och tilldela värdet till samma variabel

$x=4;

$x/=10;

** =

Exponentiell operator som används för att få exponent och tilldela värdet till samma variabel

$x=4;

$x**=10;

%=

Modulusoperator som används för att få en påminnelse under division och tilldela värdet till samma variabel

$x=10;

$x%=4;

Exempel för att slutföra alla ovanstå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");

Produktion:

Lägg till = 15

Sub= 10

Mul = 50

Div = 10

Logisk och relationell Operators:

Perl använder logiska operatorer för att jämföra tal och strängar. För det mesta används logiska operatorer i villkorliga uttalanden.

Logisk och relationell Operators i Perl

Logisk och relationell Operators i Perl

Operator BESKRIVNING

==eller ekv

Operator används för att kontrollera om båda variablerna är lika

!=Eller nej

Operator används för att kontrollera om båda variablerna inte är lika

> eller gt

Operator används för att kontrollera om

A är större än B

<or lt

Operator används för att kontrollera om

A är mindre än B

>=eller ge

Operator används för att kontrollera om

A är större än eller lika med B

<=eller le

Operator används för att kontrollera om

A är mindre än eller lika med B

|| eller eller

Operator används för att kontrollera att antingen A eller B håller värdet

&&eller och

Operator används för att kontrollera att både A och B håller värdet

Låt oss ta ett exempel där vi kan förklara alla scenarier.

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");
}

Produktion:

Sant - lika 5 och 5

Sant - inte lika med 6 och 7

Sant – 7 större än 6

Sant – 6 mindre än 7

Sant – 6 mindre än 7

Sant – 7 större än 6

Du kan se exempel på logiska operatorer i senare avsnitt.

Perl Specialvariabler

Vad är Perl Special Variables?

Specialvariabler i Perl är de som har någon fördefinierad betydelse. Dessa variabler betecknas med antingen riktiga namn eller skiljetecken. Vi har en specialvariabel för alla Perl-stödda variabler som skalära specialvariabler, Array specialvariabler, hash specialvariabler. De flesta av de specialvariabler som vi använder är av skalärer.

När vi vill använda specialvariabeln med dess namn, måste vi ladda en Perl-modul "använd engelska", för att uttryckligen säga Perl-tolk att vi kommer att använda speciella variabler med dess namn.

Skalära specialvariabler

Variabel BESKRIVNING

$_$ARG

Detta är standardvariabeln som lagrar de aktuella värdena.

$0 eller $PROGRAM_NAME

Lagrar filnamnet för Perl-skriptet.

$/

Indatapostseparatorn, denna har ett standardvärde på '\n' som är nyradstecken

$.

Innehåller det aktuella radnumret för filen som läses

$,

Utdatafältseparator, denna används huvudsakligen av print()-satsen. Som standard är värdet för detta satt till 0, vi kan ändra värdet på denna variabel.

$\

Utdatapostseparator, värdet på denna variabel kommer att vara tomt; vi kan tilldela vilket värde som helst till detta, som kommer att användas av print()-satsen när utskriften skrivs ut.

$#

Denna variabel används för utmatningsformat vid utskrift av siffror.

$%$FORMAT_PAGE_NUMBER

Kommer att hålla det aktuella sidnumret för den lästa filen.

$=$FORMAT_LINES_PER_PAGE

Kommer att hålla den aktuella sidlängden på filen läst.

$-$FORMAT_LINES_LEFT

Innehåller värdet på antalet rader som återstår att skriva ut från sidan.

$~$FORMAT_NAME

Formatnamn: Behåller formatet för den valda utdata som standard filhandtagets namn.

$^$FORMAT_TOP_NAME

Innehåller värdet för rubrikformatet för filhanteraren, som standard är värdet _TOP följt av filhandtagsnamn.

$|$OUTPUT_AUTOFLUSH

Standard är noll; detta används för att spola ut bufferten efter varje write() eller print().

$$

Kommer att hålla det löpande processnumret för Perl-tolken.

$?

Statuskod : Rör- och systemanrop. Returstatus för det körda kommandot.

$&$MATCH

Används i reguljära uttryck, kommer detta att hålla en sträng av den senaste lyckade mönstermatchningen.

$`$ FÖRMATCH

Används i reguljära uttryck, kommer detta att hålla en sträng som föregås av den senaste lyckade mönstermatchningen.

$'$POSTMATCH

Används i reguljära uttryck, kommer detta att hålla en sträng som följs av den senaste lyckade mönstermatchningen.

$+$LAST_PAREN_MATCH

Håller strängen för den sista parentesen som matchas av den senaste mönstersökningen.

$

$1, $2, $3 …. Håller värdena för mönstret matchade i ordning.

$[

Första index: Array, en delsträng.

$]

En version av Perl.

$”

Avgränsaren som används för listelement, som standardvärde är ett blanksteg.

$;

Subscript separator används i flerdimensionella arrayer

$!

Skriver ut felnumret i numeriskt sammanhang. Skriv ut felet i strängsammanhang.

$@

Kommer att hålla syntaxfelinformationen, som används när eval() används.

$<

Innehåller det verkliga UID (användar-ID) för processen som kör skriptet.

$>

Innehåller det effektiva UID för processen som kör skriptet.

$(

Innehåller det verkliga GID (grupp-id) för processen som kör skriptet.

$)

Innehåller det effektiva GID för processen som kör skriptet.

$^D$DEBUGGING

Innehåller det aktuella värdet för felsökningsflaggorna.

$^C

Håller flaggans aktuella värde när –c kommandoradsomkopplare används.

$^F

Maximal systemfilbeskrivning, som standardvärde, är inställd på 2

$^I$INPLACE_EDIT

Innehåller värdet för –i kommandoradsomkopplare.

$^M

Special Memory pool kan användas när Perl script dör med ett out-off minnesfel.

$^O$OSNAME

Operasysteminformationen lagras. 'Linux' för Linux-system, 'mswin32' för Windows system.

$^T$ BASETIME

Tiden när skripten körs i sekunder.

$^W$VARNING

Det aktuella värdet på kommandoradsomkopplaren –w. Varningsbrytare.

$ARGV

Namnet på den aktuella filen, när <> används.

Array specialvariabler:

Variabel BESKRIVNING

@INC

Innehåller en lista med sökvägar, där Perl-biblioteksmoduler eller -skript kan granskas när det aktuella skriptet körs. Denna @INC används av användning och kräver uttalanden för att undersöka dessa sökvägar för biblioteksmoduler.

@ARGV

Lagrar kommandoradsargumenten som skickats.

@_

Används i subrutiner, samtidigt som parametrarna överförs till subrutinerna.

@F

Detta är arrayen i vilken ingångslinjerna lagras när auto split –a (kommandoradsomkopplare används).

Hash specialvariabler:

Variabel BESKRIVNING

%INC

Filnamnet kommer att vara nycklarna; värden kommer att vara sökvägen till dessa filer. Används av gör, använd och kräver.

%ENV

Systemmiljövariabler.

%SIG

Signals hanterare.

Perl reguljärt uttryck

Vad är reguljärt uttryck?

Perl reguljära uttryck är tillräckligt starkt för att matcha strängmönstren i ett sats eller en grupp av satser. Reguljära uttryck används mest i textanalys, mönstermatchning och mycket mer baserat på kravet. Vi har vissa operatorer, som speciellt används av reguljära uttrycksmönsterbindning =~ och !~, Dessa är test- och tilldelningsoperatorer.

Vanligt uttryck Operatorer

Vanligt uttryck Operators i Perl

Vanligt uttryck Operators i Perl

  • Perl Match — m//
  • Perl-ersättare – s///
  • Perl Transliterate – tr///

Innan vi går vidare behöver vi veta några saker om reguljära uttryck; det finns vissa saker som meta-tecken, jokertecken i Perl Regex-syntax.

Char Betydelse

\

Special eller offert

*

Matcha 0 eller fler tecken

+

Matcha 1 eller fler tecken

?

Matcha 0 eller 1 tecken

|

Kan användas för att matcha alternativa mönster

()

Används för att lagra mönstret matchat

[]

Uppsättning tecken kan passeras. Används specifikt för numeriska och alfabet.

{}

Används för att ange hur många gånger matchen kan genomföras.

^

Början av strängen

$

Slutet på strängen

\w

Används för att matcha ett enstaka tecken eller ord som kan vara alfanumeriskt inklusive "_"

\W

Matcha allt annat än alfanumeriskt

\s

Används för att matcha blanksteg

\S

Matcha allt annat än blanksteg

\d

Matcha siffror. Inte decimalvärden och negativa värden

\D

Matcha allt annat än siffror.

\t

Matcha flikutrymme

\n

Matcha nyraden

Ovanstående är uppsättningen tecken som kan användas under mönstermatchning.

Låt oss se några exempel.

Tänk på en situation där användaren tillhandahåller viss input under körning av skript, och vi vill kontrollera om användaren har angett något namn som input eller inte. Vi måste skriva en syntax för reguljära uttryck för att extrahera ditt namn och skriva ut detsamma.

my $userinput="Guru99 Rocks";
if($userinput=~m/.*(Guru99).*/)
{
	print "Found Pattern";
}
else
{
	print "unable to find the pattern";
}

Produktion:

Hittade mönster

Här har vi skrivit det reguljära uttrycket som /.*(Guru99).*/.* matchar alla tecken i en sträng. Ett '.' i perl regex match hänvisar till alla tecken inklusive mellanslag.

Låt oss se exakt hur vi kan konstruera ett Regex.

Tänk på ett exempel på en sträng med flera ord och siffror och specialsymboler som denna "Hej alla, det här är mitt nummer: +91-99298373639";

Regex: /^\w+\s\w+\s\w+\s\w+\s\w+\s\w+\:\+\d+\-\d+/i

Ordutrymme ordmellanrum ordmellanrum ordmellanrum ordmellanrum ordmellanrum specialtecken: mellanslag specialtecken+siffror specialtecken –siffror.

Perl Match Operatorer

Matchningsoperatorerna används för att matcha en sträng i någon sats eller i en variabel.

my $var="Hello this is perl";
if($var=~m/perl/)
{
	print "true"; 
} 
else
{
	print "False"; 
}

Produktion:

sann

Denna lilla kod kommer att skriva ut "true", eftersom perl-mönstermatchningen identifierar strängen i en variabel. I grund och botten söker Perl efter texten som tillhandahålls i // genom hela strängen, även om den hittar på ett ställe kommer den att returnera "true". Mönstret kan vara var som helst i variabeln. Vi kan försöka ersätta =~ med !~ för att se skillnaden mellan dessa två operatorer.

Perl-byte Operator

Denna operator kan användas för att söka och ersätta alla tecken med antingen null eller något annat tecken.

my $a="Hello how are you";
$a=~s/hello/cello/gi;
print $a;

Produktion:

cello hur mår du

Notera: Vi kan faktiskt använda vilken mönstermatchande sträng som helst som vi gjorde tidigare i denna ersättningsoperator också. Här använde vi 'gi', g-globally, i-ignore case.

Perl -översättning Operator

Detta liknar Substitution, men det använder inga perl reguljära uttryck, utan vi kan direkt skicka värdet eller ett ord som vi vill ersätta.

my $a="Hello how are you";
$a=~tr/hello/cello/;
print $a;

Produktion:

Hej ko är du

Perl-fil I/O

Perl utformades för att effektivt manipulera filer och I/O-operationer. Perl största fördelen är i filanalys och hantering av filerna. Det finns många inbyggda funktioner och operatorer som används vid filhantering i Perl.

I grund och botten görs filoperationer som utförs med Perl med FILEHANDLE. Vi måste definiera detta FILHANDLE under öppningen av en fil för antingen läsning eller skrivning.

I den här Perl-skripthandledningen kommer du att lära dig-

Perl Öppna filen

Vi kan öppna en fil med funktionen open() tillgänglig i Perl.

open(FILEHANDLE, "filename or complete path of the file");

Nu har vi öppnat en fil, nu uppstår en fråga. Är det för att läsa eller skriva?

Perl Läs fil & Perl Skriv fil

Perl har vissa lägen som måste användas för att läsa, skriva eller lägga till 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");

Några exempel för att läsa en fil:

Läser fil i Perl

Tänk att vi har en perl-fil med namnet file.txt och har några rader text i den. Vi måste öppna den här filen och skriva ut densamma.

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;

Detta kommer att skriva ut filinnehållet på utdataskärmen.

Nu kommer vi att skriva ett program för att skapa och skriva data till en perl-fil.

Skriver fil i Perl

open(FH,">test.txt");
my $var=<>;
print FH $var;
close FH;

Detta kommer att skriva indata som tillhandahålls under körning och skapar en fil test.txt som kommer att ha indata.

Ovanstående sätt kommer alltid att försöka skapa en fil med namnet test.txt och skriver in indata i filen; vi kommer att skriva samma sak för att lägga till filen.

Arkiv Lägg till operation i Perl

open(FH,">>test.txt");
my $var=<>;
print FH $var;
close FH;
Lägen BESKRIVNING

<

Läsa

+<

Läser och skriver

>

Skapar, skriver och trunkerar

+>

Läs, skriv, skapa och trunkera

>>

Skriver, lägger till och skapar

+>>

Läs, skriv, lägger till och skapa

Nu när vi måste se hur man läser, skriver och lägger till filer med grundläggande exempel.

Vi kommer att se några fler exempel och andra funktioner som hjälper dig att förstå mer om filer.

Perl Tell

Denna metod kommer att returnera den aktuella positionen för FILEHANDLER i byte om den specificeras, annars kommer den att betrakta den sista raden som positionen.

open(FH, "test.pl");
while(<FH>)
{
	$a=tell FH;
	print "$a";
}

Perl Seek

Sökfunktionen liknar systemanropet fseek. Denna metod används för att placera filpekaren till en specifik plats genom att ange byte följt av antingen början av filpekaren eller slutet av filpekaren.

seek FH, bytes, WHENCE;

NÄR är positionen för filpekaren att starta. Noll ställer in det från början av filen.

Exempel: Låt input.txt ha vissa data som "Hej det här är min värld."

open FH, '+<','input.txt';
seek FH, 5, 0;    # This will start reading data after 5 bytes.
$/ = undef;
$out = <FH>;
print $out;
close FH;

Produktion:

det här är min värld

Perl Unlink

Unlink används för att radera filen.

unlink("filename or complete file path");

Hantera kataloger:

Vi kan också hantera kataloger genom vilka vi kan hantera flera filer.

låt oss se hur man öppnar en katalog. Vi kan använda metoderna opendir och readdir.

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

Detta kommer att skriva ut alla tillgängliga filer i den katalogen.

Perl-filtester och deras betydelse

-r

För att kontrollera om fil/katalog är läsbar av den aktuella användaren/gruppen

-w

För att kontrollera om fil/katalog är skrivbar av den aktuella användaren/gruppen

-x

För att kontrollera om fil/katalog är körbar av den aktuella användaren/gruppen

-o

För att kontrollera om fil/katalog ägs av den aktuella användaren

-R

För att kontrollera om fil/katalog är läsbar av denna riktiga användare/grupp

-W

För att kontrollera om fil/katalog är skrivbar av denna riktiga användare/grupp

-X

För att kontrollera om fil/katalog är körbar av denna riktiga användare/grupp

-O

För att kontrollera om filen/katalogen ägs av denna riktiga användare

-e

För att kontrollera om fil-/katalognamn finns

-z

För att kontrollera om filen finns och har noll storlek (alltid falskt för kataloger)

-f

För att kontrollera om Entry är en vanlig fil

-d

För att kontrollera om Entry är en katalog

-l

För att kontrollera om Entry är en symbolisk länk

-S

För att kontrollera om Entry är ett uttag

-p

För att kontrollera om Entry är ett namngivet rör (ett "FIFO")

-b

För att kontrollera om Entry är en blockspecialfil (som en monteringsbar disk)

-c

För att kontrollera om Entry är en specialfil med tecken (som en I/O-enhet)

-u

För att kontrollera om filen eller katalogen är inställd

-g

För att kontrollera om fil eller katalog är setgid

-k

För att kontrollera om filen eller katalogen har den sticky biten inställd

-t

Det givna filhandtaget är en TTY (som med isatty() systemfunktionen, filnamn kan inte testas med detta test)

-T

För att kontrollera om filen ser ut som en "text"-fil

-B

För att kontrollera om filen ser ut som en "binär" fil

-M

För att kontrollera ändringsålder (mätt i dagar) för filen

-A

För att kontrollera filens åtkomstålder (mätt i dagar).

-C

För att kontrollera Inode-modifieringsålder (mätt i dagar) för filen

Perl subrutin

Vad är subrutin?

Subrutiner liknar funktioner i andra programmeringsspråk. Vi har redan använt några inbyggda funktioner som print, chomp, chop, etc. Vi kan skriva våra egna subrutiner i Perl. Dessa subrutiner kan skrivas var som helst i programmet; det är att föredra att placera subrutinerna antingen i början eller i slutet av koden.

Subrutin i PERL

Exempel på subrutiner

sub subroutine_name 
{
	Statements…;    # this is how typical subroutines look like.
}

Nu när vi vet hur man skriver en subrutin, hur kommer vi åt den?

Vi måste komma åt eller anropa en subrutin med hjälp av subrutinnamnet med prefixet '&'-symbolen.

sub display
{
	print "this is a subroutine";
}
display();    # This is how we call a subroutine

Skickar Perl-parametrar och Perl-argument

Subrutiner eller perl-funktion skrivs för att placera den återanvändbara koden i den. Det mesta av den återanvändbara koden kräver att parametrar skickas till subrutinen. Här kommer vi att lära oss hur vi kan skicka argument till 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.

Produktion:

3 är värdet som passerats

@_ är en speciell arrayvariabel som lagrar argumenten som skickas till subrutinerna.

Perl Shift

Vi kan också använda nyckelordet "shift" som flyttar en parameter åt gången till en variabel eller $_[0],$_[1]... som är ett individuellt element i @_-matrisen

sub display
{		
my $var=shift;		
print "$var is passed";		
}		
display("hello");

Produktion:

hej är passerad

Subrutiner används vanligtvis i objektorienterad programmering och även på platser där du kan ha mer återanvändbar kod som ska placeras.

Huvudfunktionaliteten hos subrutiner är att göra någon uppgift och returnera resultatet av den återanvändbara koden.

PERL handledning för nybörjare - Komplett guide

Vi kan returnera ett värde från subrutinen med nyckelordet return.

sub add
{
my $a=shift;
my $b=shift;
return($a+$b);
}
my $result=add(5,6);
print $result;

Produktion:

11

$result kommer att innehålla värdet av $a och $b som lagts till.

Vi kan också skicka hash och array direkt till subrutinen.

sub hash
{
my %hash=@_;
print %hash;
}
%value= ( 1=>'a', 2=>'b');
&hash(%value);

Produktion:

1a2b

Vi kan också returnera en hash eller en 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;

Produktion:

Inuti Sub-routine2b1aEfter Sub-rutin call2b1a

Perl-format

Perl har en mekanism med vilken vi kan generera rapporter. Med den här funktionen kan vi göra rapporter precis som vi vill medan vi skriver ut på Output-skärmen eller i en fil. Ett enkelt format kan skrivas med funktionerna printf eller sprintf tillgängliga i Perl.

printf "%05d\n", 30;

Detta kommer att inkludera inledande nollor framför nummer 30 vilket gör en total räkning av siffror till 5. Detsamma kan användas för sprintf.

sprintf "%05d\n", 30; # This will print the same as printf.

Genom att använda printf och sprintf kan vi få de flesta av Perl-formaten. När det gäller rapporter blir det svårt att genomföra.

Perl-format

Exempel på en rapport:

================================================== =========================
Namn Adress Ålder Telefon
================================================== =========================
Krishna Chennai 24 929309242
Shruthi Chennai 24 929309232

Ovanstående är exempel på rapporter som vi behöver skriva ut på samma sätt i Perl. Detta kan uppnås genom att använda perl printf och perl sprintf. Det kan effektivt implementeras med hjälp av format.

Ett format kan deklareras på nedanstående sätt.

format FORMATNAME=FORMATLIST.

Här kommer vi att använda en viss metod för att skriva ut data på utdataskärmen eller i filen.

Symbol BESKRIVNING

@

Används för att representera början av fälthållaren

>

Högerjustering av text

<

Vänsterjustering av text

|

Mittinriktning

#

Numeriskt om flera # anges. Antas som en kommentar om enstaka # anges

.

Decimalpunkt

^

Start av fälthållare kan även användas för multiline och även för word-wrap

~

Raden ska vara tom om variabeln är tom

@*

Flera rader.

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

Kör koden för att se utdata.

Vi använder symbolen @ för att ange början på fälthållaren eller strängen, '<' varje tecken.

Vi använder STDOUT för att skriva ut på standardutdata. Vi kan ändra detta till filhanterare som vi använder för att skriva data till 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 ersätta '<' till '>' eller '|' för att ändra justeringen av texten. STDOUT_TOP används för att designa formatets rubrik. Vi kan också använda samma sak med filhanteraren med FH_TOP( FH är filhanteraren). Detta kommer att mata ut formatet till filen som vi arbetar med på.

Perl kodningsstandarder

Varje programmerare kommer att ha sin egen känsla för att skriva koden med hjälp av vissa standarder; dessa standarder bör vara bekanta nog att andra programmerare kan förstå och stödja koden ordentligt.

Kodningsstandarder i Perl

Kodningsstandarder i Perl

Att skriva kod är enkelt och lätt. Problemet uppstår när det behöver underhållas i senare skeden. Korrekt riktlinjer och kodningsstandarder måste följas när du skriver koden. Perl definierar också vissa standarder som kommer att vara användbara för programmerare att skriva kod. Det är tillrådligt att ladda "strikt" och "varningsmodul" medan du skriver koden. Var och en av dessa moduler har sin egen betydelse. Strict kommer att få oss att deklarera variabeln innan vi använder och kommer också att berätta om det finns något blottat ord i din kod. Varningsmodulen kan alternativt användas genom att skicka '-w'-alternativet till Perl-tolken i shebang. Varningar skrivs ut på utmatningsskärmen.

#!/usr/bin/perl –w

Nedan finns några listor över standarder.

  • Använd modulen "strikt" och "varningar".
  • Ta bort variabel som inte används.
  • Variabelnamn bör vara begripliga för andra användare. Ex: $name, @fileData etc.
  • Dokumentation krävs vid kodning av ett skript.
  • Hårdkoda inte några värden, försök hellre hämta dem dynamiskt eller be användaren att ange under körning.(Filsökväg, Filnamn).
  • Maximera återanvändning av kod. Försök att lägga den återanvändbara koden i subrutiner.
  • Det betyder att fullständiga namn ska anges för subrutiner.
  • Subrutiner måste skrivas med lämpliga kommentarer och dokumentation.
  • Initiera alltid variabler.
  • Kontrollera alltid returkoderna för systemsamtal. Att öppna en fil kan hända eller inte, att ha en returkod här visar felstatus om filen inte finns.

    Ex: öppen(FH,

  • Subrutin ska alltid returnera ett värde.
  • Öppna lockigt i samma linje.
  • Enkel linje BLOCK kan placeras i en enda rad med lockigt.
  • Använd etiketter under LOOPSEN, det skulle vara lätt att lämna slingan när det är nödvändigt.
  • Använd understreck medan långa fraser av ord skrivs som ett variabelnamn eller subrutin.
  • Försök att använda enkelt regex medan du kodar.

Perfekt exempel 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-felhantering

Vad är ett undantag?

Ett undantag är en händelse som inträffar under programmets körning som kommer att avbryta eller avsluta ditt program.

Felhantering

Felhantering är en som varje programmerare måste ta hand om under programmeringen. Perl tillhandahåller också felhanteringstekniker med vilka vi kan fånga felet och hantera dem därefter.

Felhantering i Perl

Felhantering i Perl

Det finns många sätt att kontrollera om det finns fel i programmet. Vi måste undersöka returkoderna för funktionen som vi använder kod. Om vi ​​kan hantera dessa returkoder på rätt sätt kan det mesta av felhanteringen uppnås.

Vad återkommer vid systemanrop?

Vid systemanrop kommer returstatusen att lagras i två specialvariabler $? Och $!

$! – Detta kommer att fånga felnumret eller felnumret som är kopplat till felmeddelandet.

$? – Detta kommer att hålla funktionen return status system() .

Använder Perl-operator eller Logical

Vi kan använda logical eller operator för felhantering när vi använder systemsamtal.

ex:

open(FH,"<test.txt");

Detta öppnar filen i läsläge om filen finns.

Vad händer om filen saknas?

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 hantera fatala fel, kompileringstidsfel, runtime-fel och de fel som avslutar din kod vid någon tidpunkt.

Perl Eval-funktionen kan ha ett kodblock eller ett uttryck. Evals betraktar allt som placeras i den som ett snöre.

Överväg en situation med anrop av en subrutin som inte är definierad i skriptet. I den här situationen avslutas skriptet och säger "odefinierad subrutin &XYZ, detta fel kan hanteras i eval-funktionen.

Det finns många användningsområden för evals block; en sådan användning är när vi vill ladda modulen som är specifik för operativsystemet under körning.

Ex: Dividera med noll orsakar ett fatalt fel; för att hantera detta kan vi placera koden i evals block.

$a=5; 
$b=0; 
eval 
{ 
 '$result=$a/$b'; 
} 
if($@)
{
 print "$@";    # All the error codes returned by evals will get stored in $@. 
}

Produktion:

syntaxfel vid C:\Users\XYZ\Text.pl rad 8, nära ")

{“

Körandet av C:\Users\XYZ\Text.pl avbröts på grund av kompileringsfel.

Exempel: eval med perl die-sats.

sub test 
{ 
die "Dieing in sub test \n"; 
} 
eval 
{ 
test(); 
}; 
print "Caught : $@\n";

Produktion:

Fångad: Död i deltest

Använder Perl Try

Perl stöder inte försök, fånga och slutligen kodblock som andra programmeringsspråk. Vi kan fortfarande använda dem genom att ladda en extern Perl-modul.

använd Try::Tiny;

Med detta kan vi placera din kod i försöksblocket och fånga felet i varningsblocket.

I stället för $@ används i eval Try::Tiny använder $_.

# hantera fel med en catch-hanterare

try 
{ 
die "Die now"; 
} 
catch 
{ 
warn "caught error: $_"; # not $@ 
};

Använder äntligen.

my $y;
try 
{ 
 die 'foo' 
}
finally 
{ 
    $y = 'bar' 
};

try 
{ 
    die 'Die now' 
} 
catch 
{ 
    warn "Returned from die: $_" 
} 
finally 
{ 
    $y = 'gone' 
};

Produktion:

foo på C:\Users\XYZ\Text.pl rad 4.

Vi kan använda prova, fånga och slutligen på detta sätt.

prova { # statement }

fånga {# uttalande }

slutligen { # statement };

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
};

Produktion:

Or

try 
{ 
# statement 
} 
finally 
{ 
# statement 
} 
catch 
{ 
# statement 
};

Produktion:

Perl Socket programmering

Vad är ett uttag?

PERL handledning för nybörjare - Komplett guide

Socket är ett medium genom vilket två datorer kan interagera i ett nätverk genom att använda nätverksadress och portar.

Anta att A (server) och B (klient) är två system som måste interagera med varandra med hjälp av Sockets för att köra vissa program.

För att implementera detta behöver vi skapa sockets i både A (server) och B (klient), A kommer att vara i mottagande tillstånd och B kommer att vara i sändande tillstånd.

A (server):

Här vill servern ta emot en anslutning från B (klient) och utföra några uppgifter och skicka tillbaka resultatet till B (klient). När vi kör koden försöker operativsystemet i A skapa en socket och binder en port till den socket. Sedan lyssnar den från avsändaren som är B.

B (klient).

Här vill klienten skicka något program från sitt system till A (Server) för viss bearbetning. När vi exekverar koden försöker operativsystemet i B skapa en socket för att kommunicera med A (Server), B måste ange IP-adressen och portnumret för A som B vill ansluta till.

Om detta går bra kommer båda systemen att interagera för att utbyta information via en port. Perl stöder även socket-programmering.

Perl har ett inbyggt API genom vilket sockets kan implementeras. För att göra det enkelt finns det många CPAN-moduler som vi använder för att skriva socketprogram.

Serverfunktioner:

  • Skapa Socket
  • Bind uttag med adress och port
  • Lyssna på uttaget på den portadressen
  • Acceptera klientanslutningarna som försöker ansluta med serverns port och IP
  • Utför operationer

Klient Operationer:

  • Skapa Socket
  • Anslut till servern med hjälp av dess portadress
  • Utför operationer

Klient-server Operationer i Perl

socket.io

Detta är en modul för socket-programmering, som är baserad på objektorienterad programmering. Den här modulen stöder inte INET-nätverkstypen som används i nätverk.

IO::Socket::INET:

Denna modul stöder INET-domän och bygger på IO::Sockets. Alla metoder som finns tillgängliga i IO::Sockets ärvs i INET-modulen.

Klient och server som använder TCP-protokoll:

TCP är ett anslutningsorienterat protokoll; vi kommer att använda detta protokoll för socketprogrammering.

Innan vi går vidare, låt oss se hur vi kan skapa ett objekt för IO::Socket::INET-modulen och skapa 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 nya metoden i IO::Socket::INET-modulen accepterar en hash som en indataparameter till subrutinen. Denna hash är fördefinierad, och vi behöver bara ge värdena till nycklarna som vi vill använda. Det finns en lista över nycklar som används av denna hash.

PeerAddr

Fjärrvärdens adress

PeerHost

Synonym till PeerAddr

PeerPort

Fjärrport eller tjänst

LocalAddr

Lokal värdbindningsadress

lokalvärd

Synonym till LocalAddr

LocalPort

Lokal värdbindningsport

proto

Protokollnamn (eller nummer)

Typ

socket typ

Lyssna

Köstorlek för att lyssna

ÅteranvändAddr

Ställ in SO_REUSEADDR före bindning

Återanvändning

Ställ in SO_REUSEADDR före bindning

ReusePort

Ställ in SO_REUSEPORT före bindning

Broadcast

Ställ in SO_BROADCAST före bindning

Timeout

Timeoutvärde för olika operationer

MultiHomed

Prova alla adresser för multihomed-värdar

Blockering

Bestäm om anslutningen kommer att blockera läge

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

Obs:

I socketprogrammering måste vi köra Server.pl först och sedan client.pl individuellt i olika kommandoprompter om vi kör på lokal värd.

Vad är Perl-moduler och -paket

Moduler och paket är nära besläktade med varandra och är oberoende. Paket: Ett Perl-paket är också känt som namnutrymme och som har alla unika variabler som används som hash, arrayer, skalärer och subrutiner. Modul: Modul är en samling återanvändbar kod, där vi skriver subrutiner i den. Dessa moduler kan laddas i Perl-program för att använda subrutinerna som är skrivna i dessa moduler.

Vad är Perl-moduler?

Standardmoduler kommer att installeras under installationen av Perl på alla system. CPAN: Omfattande Perl Archive Network – Ett globalt arkiv av Perl-moduler. Våra egna skräddarsydda Perl-moduler som kan skrivas av oss. I grund och botten kommer en modul när den laddas i vilket skript som helst att exportera alla dess globala variabler och subrutiner. Dessa subrutiner kan direkt anropa som om de deklarerades i själva skriptet. Perl-moduler kan skrivas med tillägget .pm till filnamnet Ex : Foo.pm. En modul kan skrivas genom att använda 'paket Foo' i början av programmet.

Grundläggande 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 produktion

För att använda denna Perl-modul måste vi placera den i den aktuella katalogen.

Vi kan ladda en Perl-modul genom att använda require eller använda var som helst i koden. Den största skillnaden mellan kräver och användning är att kräva laddad modul under körning och använda laster under kompileringstid.

#!/usr/bin/perl
require
Arithmetic;
print Arithmetic::add(5,6);
print Arithmetic:: subtract (5,6);

Här, i exemplet ovan, kommer vi åt subrutinerna med ett fullt kvalificerat modulnamn.

Vi kan också komma åt paketet med 'använd aritmetik'.

Exportör:

Den här modulen har en standardfunktion för importmetoder.

#!/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 användas för att skicka en lista med variabler och subrutiner som som standard kommer att exporteras till den som anropar modulen.

@EXPORT_OK array kan användas för att skicka en lista med variabler och subrutiner som kommer att exporteras på begäran, där användaren måste specificera när modulen laddas.

#!/usr/bin/perl 
use 
Arithmetic qw(subtract); 
print add(5,6); 
print subtract (5,6);

Som standard kommer lägg till subrutin att exporteras. Subtrahera metoden kommer inte att exporteras om den inte specificeras när modulen laddas.

Objektorienterad programmering i Perl

I det här avsnittet kommer vi att lära oss hur man skapar Perl-objektorienterade moduler. Låt oss först se vad objektet är? Ett objekt är en instans med vilken vi kan komma åt, ändra och lokalisera vissa data i vilken Perl-modul som helst. Detta är inget annat än att få ditt befintliga Perl-paket, variabler och subrutiner att fungera som klass, objekt och metoder med hänvisning till andra programmeringsspråk.

Skapa klass

Vi vet redan hur man skapar moduler från föregående ämne. Syftet med klassen är att lagra metoder och variabler. En Perl-modul kommer att ha subrutiner som är metoder. Vi behöver komma åt dessa variabler och subrutinobjekt.

Perl konstruktör

En konstruktor i Perl är en metod som kommer att exekvera och returnera oss en referens med modulnamnet taggat till referensen. Detta kallas för att välsigna klassen. Vi använder en viss variabel för att välsigna en perl-klass, vilket är välsigna.

#!/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 nya metoden som används som konstruktor för en klass, Denna konstruktor kommer att skapa ett objekt åt oss och kommer tillbaka till skriptet som anropar denna konstruktor.

#!/usr/bin/perl
use Arithmetic;
my $obj= Arithmetic->new(); 
my $result= $obj->add(5,6); 
print "$result";
$result = $obj->subtract(6,5);
print "$result";

Här måste vi förstå hur objektet skapades. När vi försöker skapa ett objekt för klassen måste vi använda klassens fullständiga namn. Antag, om perl-klassen finns i någon lib\Math\Arithmetic.pm. Och om vi vill komma åt denna perl-klass från lib-katalogen måste vi tillhandahålla hela sökvägen till klassen medan vi anropar skriptet.

använd lib::Math::Arithmetic;

my $obj = lib::Math::Arithmetic->new();

Så här går objektskapandet i Perl till.

@INC:

Hur vet Perl-skriptet var biblioteksmodulen finns? Perl känner bara till den aktuella katalogen för skriptet och Perl inbyggda bibliotekssökväg. När vi använder en Perl-modul, som inte finns i den aktuella katalogen eller Perl-bibliotekssökvägen, kommer skriptet alltid att misslyckas. Om @INC, detta är en array som innehåller alla katalogsökvägar där den måste leta efter Perl-modulerna. Försök att köra det här kommandot och se vad som blir resultatet.

perl –e "print @INC"

Detta kommer att ge lite utdata, och det är vägen där lib-modulerna kommer att vara tillgängliga. När vi använder någon ny biblioteksmodul måste vi säga till Perl, tolk, att titta på just den plats där Perl-modulen är tillgänglig.

push(@INC, "PATH TO YOUR MODULE");

Gör detta som din första kodrad. Detta kommer att berätta för din tolk att titta på den vägen. eller användning

lib Arithmetic; # List here is your Perl Module location

Perl Destructor

Destruktorn för ett objekt anropas som standard i slutet och innan ditt skript avslutas. Detta används för att förstöra dina föremål från minnet.


PERL V/s Shell Scripting

Introduktion till PERL-programmering

  • Programmering i Perl orsakar inte portabilitetsproblem, vilket är vanligt när man använder olika skal i skalskript.
  • Felhantering är mycket enkel i Perl
  • Du kan enkelt skriva långa och komplexa program på Perl på grund av dess enorma omfattning. Detta till skillnad från Shell som inte stöder namnutrymmen, moduler, objekt, arv etc.
  • Shell har färre återanvändbara bibliotek tillgängliga. Inget jämfört med Perls CPAN
  • Skalet är mindre säkert. Det anropar externa funktioner (kommandon som mv, cp etc beror på skalet som används). Tvärtom gör Perl användbart arbete när han använder interna funktioner.

Hur PERL används i automationstestning

Perl används ofta inom automation. Det kanske inte är de bästa programmeringsspråken i världen men det passar bäst för vissa typer av uppgifter. Låt oss diskutera var och varför Perl används till Automationstestning.

Förvaringstestning

Lagringstestning med Perl

Vad är lagring? Data lagras i filer.

Anta att vi har en lagringsrelaterad Testfall där vi måste skriva data på en partition, läsa den & verifiera att data är korrekt skriven.

Detta kan göras manuellt, men kan en manuell testare utföra samma sak 10000 XNUMX gånger? Det kommer att bli en mardröm! Vi behöver automatisering

Bästa verktyget för att automatisera allt som har med lagring att göra är Perl på grund av dess filhanteringstekniker, REGEX och kraftfull filanalys som förbrukar minst körningstid jämfört med andra programmeringsspråk.

Varför måste vi testa lagring? Tänk på stora datacenter där data kommer att flöda kontinuerligt från ett system till ett annat system med 1000-tals poster som lagras per sekund. Att testa robustheten hos en sådan lagringsmekanism är viktigt.

Många företag som HP, Dell, IBM och många servertillverkare använder Perl som ett gränssnitt för att testa funktionalitet i lagrings- och nätverksdomäner. NetApp är ett sådant företag som helt arbetar med lagring och använder Perl som programmeringsspråk för att automatisera testfallen.

Om du är intresserad av Perl Automation skulle det vara tillrådligt att lära dig mer om lagring och nätverk Concepts.

Server- och nätverkstestning:

Server- och nätverkstestning med Perl

Server- och nätverkstestning med Perl

PERL används i stor utsträckning inom serverns drifttid och prestandaövervakning.

Överväg ett datacenter som har 100 värdar (servrar). Du måste ansluta till varje värd, utföra några kommandon på distans. Du vill också starta om systemet och kontrollera när det kommer tillbaka online.

Att manuellt göra denna uppgift för alla 100 värdar kommer att vara en mardröm. Men vi kan enkelt automatisera detta med PERL

Designa steg för att uppnå detta ovan automatisering med PERL

  1. Ta input från filen om värdinformationen som (IP, användarnamn och lösenord).
  2. Använd Net::SSH2 för att ansluta till varje system och upprätta en kanal för att utföra kommandona.
  3. Kör uppsättning kommandon som krävs t.ex.: ls, dir, ifconfig,ps etc.
  4. Starta om systemet.
  5. Vänta i 10 minuter tills systemet kommer upp.
  6. Pinga systemet med Net::Ping-modulen och skriv ut statusen.

Vi kommer att koda scenariot ovan.

Låt oss ta en fil som heter Input.txt som kommer att lagra den fullständiga informationen om alla värdar där vi behöver ansluta och utföra kommandot.

Input.txt

192.168.1.2 root-lösenord

192.168.1.3 root-lösenord

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";
    }
}

Webbtestning

Perl är inte bara begränsad till lagrings- och nätverkstestning. Vi kan även utföra webbaserade tester med PERL. WWW-Mekanisera är en modul som används för webbtestning. I grund och botten kommer det inte att starta någon webbläsare för att testa funktionaliteten hos webbapplikationer, snarare använder den källkoden för HTML-sidorna.

Vi kan även utföra webbläsarbaserade tester med hjälp av Selenium IDE, RC, webbdrivrutin. Perl stöds för Selenium.

\n”; #detta kommer att behålla kvarvarande sträng efter att mönstermatchningen är klar.
skriv ut "