Programmering i perl. Regelmæssige udtryk til at finde og erstatte strenge

I dag inviterer vi dig til at gøre dig bekendt med et af Technosphere-kurserne, som er dedikeret til programmering i Perl. Dette kursus er åbent - enhver studerende eller kandidatstuderende fra M.V. Moscow State University kan tilmelde sig det. Lomonosov. Der er også flere i Technosphere tilmelding til dem åbner den 1. september. Dette semester vil du have en behagelig tilføjelse: de vil blive forstærket metodisk materiale, som vil indeholde nok information til, at du kan huske materialet fra enhver forelæsning og om nødvendigt studere det dybere.

Målet med Perl-programmeringskurset er at lære sprogets evner (dets styrker og svagheder), lær at skrive softwareprodukter på dette sprog, lær hurtigt at navigere i en andens kode. Under snittet er alle foredrag i videoformat og kort beskrivelse til dem.

Foredrag 1. Introduktion

Historien om skabelsen af ​​Perl-sproget. Præstationssammenligning. Eksempler på projekter. Dokumentation (perldoc). Opsætning af miljøet. Kører scripts (perlrun). Aflad modul. Data::Dumper modul. DDP modul. Fejlretning af perl-scripts (perldebug).

Foredrag 2. Syntaks og data

Grundlæggende syntaks (betingelser, sløjfer, kontrolfunktioner, postfix-notation). Variabler (basistyper, referencer, interpolation). Funktioner (erklæring, argumenter, kontekst, prototyper, indbyggede funktioner, grep/map/sort, eval). Operatører (udførelsesordre, specielle operatorer, tal og strenge).

Foredrag 3. Modularitet og genbrug

Omfatte. Faseblokke. Pakke. Eksportere. Versioner. Pragmatiske moduler. Ingen. Symbol tabeller. CPAN.

Foredrag 4. Regelmæssige udtryk og unicode

Unicode-understøttelse (definitioner, strenge og oktetter, konverteringer, UTF8-flag, I/O). Regulære udtryk (matching, søg og erstat, translitteration, karakterklasser, modifikatorer, grupper, opslag, indfangninger, kvantifiers, arbejde med Unicode, fejlretning).

Foredrag 5. Kommunikation med omverdenen

Arbejde med filer. Perl IO backend. Interaktion mellem processer. Arbejde med stikkontakter. Serialisering (datakonvertering til binær, JSON, CBOR, MSGPACK, Lagret, XML). Parsing af inputparametre.

Foredrag 6. OOP

Metoder. Eksempler. Arv. Metodeopløsningsrækkefølge. Detaljer. Elg-agtig.

Forelæsning 7. Arbejde med databaser

SQL. DBI. Forbinde. SQL-injektioner. Forbered, udfør. Fetchrow. Fetchall_arrayref. Fetchall_hashref. Vælg række. Vælg alt. Fejl. Transaktioner. Last_insert_id. DBIx::Klasse. Filer. Resultatsæt, resultat. Søge. Find, single. Tælle. Relationer. Deltag. Forhåndshentning. Opdater, slet. Mange_til_mange. Opbevaring. DBIx::Klasse::Skema::Loader. SQL::Oversætter. Memcached.

Foredrag 8. Webapplikationer indefra

HTTP protokol. CGI, mod_perl, FastCGI, PSGI. Web rammer. Sikkerhedsmekanismer i applikationer.

Foredrag 9. Asynkron hændelsesprogrammering

Drift af operativsystemet (parallelisme og pseudo-parallelisme, procestilstand og kontekstskifte, grad af multitasking, systemopkald blokering af I/O-operationer). Behandler N parallelle forbindelser(accepter + gaffel, C10k, ikke-blokerende I/O, hændelsesløkke). AnyEvent (lukninger, funktioner med udskudte resultater, AnyEvent-grænseflade, Guard). Coro.

Foredrag 10. Speeding up Pearl. Udvider "C"

Generering af XS-moduler. Makroprocessor. Datatyper indefra. Arbejde med stakken. Typekort. Indlejring af Perl (perlembed).

Foredrag 11.-12. Afprøvning. Præstationsanalyse

Funktionstest. Præstationstest. Belastningstest. Usability test. Test af brugergrænseflade. Sikkerhedstest. Lokaliseringstest. Kompatibilitetstest. Profilering. Benchmarks. Finder utætheder i Pure Perl. Finder lækager i XS.

Abonner på vores youtube-kanal Technostream Mail.Ru! Der finder du alle foredrag, masterclasses og udsendelser af vores uddannelsesprojekter.

Ikke for smuk, men et meget hårdfør dyr, der er i stand til at udføre hårdt arbejde.

Sprogets hovedtræk er dets rige muligheder for at arbejde med tekst, inklusive dem, der er implementeret ved hjælp af regulære udtryk.

Perl er også berømt for sin enorme samling af ekstra moduler http://www.cpan.org (engelsk)

Interessante Perl-tekstudskrivning primtal:

Perl-wle "(1 x $_) !~ /^(11+)\1+$/ && udskriv mens ++ $_"

Et andet eksempel, også imponerende i sin korthed, som også har praktiske fordele. Kun unikke linjer fra filen udskrives.

Perl -ne "$s($_)++ || print" fil

I disse eksempler ligner Perl sproget i dets korthed og uforståelighed ved første øjekast.

Perl arvede mange egenskaber fra C, shell-scriptet og awk-sprogene.

I dag er hovedversionen for udviklere den femte version af Perl-sproget, men (på nogle webservere) bruges programmer (scripts) skrevet i den forrige fjerde version fortsat (på grund af delvis bagud-inkompatibilitet). Faktisk er sprogstandarden bestemt af implementeringen af ​​tolken.

Perl er langt fra det eneste sprog, der giver rig tekstbehandlingsfunktioner. Programmeringssprogene REFAL, Icon og Snoball giver mulighed for mere fuldt ud at bruge "pattern matching"-programmeringsmetoden, hvor et særligt tilfælde er regulære udtryk.

Der er også en fuld

Perl syntaks

Syntaksen for Perl har meget til fælles med syntaksen for C, Awk og shell-sprogene.

Den første linje i kildekoden kan begynde med "#!/Path/to/Perl[-switches]" - som fortæller systemet stien til Perl-fortolkeren for at udføre programmet på UNIX-systemer og udføre dem på webserveren.

Eksempel program

Udskriv 1, 0 x 100;

Datatyper

Grundlæggende datatyper: skalar, array, hash-tabel, funktion, filbeskrivelse. Variabler forskellige typer afvige med tegnet, der går forud for variabelnavnet.

$foo ; # skalar eller pointer@foo ; # array %foo ; # hash tabel # funktion FOO; # I/O-håndtag

  • Skalære variabler bruges til at gemme enkelte værdier. De kan indeholde tal, strenge og referencer til andre objekter. Et skalært variabelnavn skal indledes med et dollartegn "$". Typen af ​​en skalarvariabel er ikke fast (i modsætning til f.eks. C-sproget) og bestemmes dynamisk afhængigt af konteksten. f.eks.

$x = 10 ; # tal $y = $x + 1 ; # brug $x som et tal...$z = $x . "streng" ; # ... og nu - som en snor$ref = \$x ; # $ref er en pointer til $x$$ref = 0 ; # $x indeholder værdien 0

  • Et array er en ordnet liste over skalarer. Hvert array-element har et ordinalindeks, som det kan tilgås med. Nummereringen af ​​elementer starter fra nul, det vil sige, at det første element på listen har indeks 0. Før navnet på en array-variabel skal du sætte tegnet "@", og for at få adgang til et specifikt array-element anbefales det at brug tegnet "$", da et bestemt array-element er en skalar. Multidimensionelle arrays kan modelleres ved at placere links til andre lister i en liste.

@array = (1,2,3,4); # skrev fire elementer til @array udskriv $array [2]; # udskriv tredje element print @array [2]; # udskriv også det tredje element, men det anbefales at bruge den tidligere version print @array [2, 3]; # udskriv det tredje og fjerde element

  • En hash-tabel er et associativt array, der tillader en streng (kaldet en nøgle) at blive knyttet til en skalar (værdi). Strengen kaldes nøglen, og skalaren i hash-tabellen kaldes værdien. Navnet på en listevariabel skal indledes med procenttegnet "%", og for at få adgang til et specifikt element i arrayet anbefales det at bruge tegnet "$".

Fysisk er en hash-tabel et array med nøgler i ulige positioner og værdier i lige positioner.

%hash = ( "kat" => "killing" , "hund" => "hvalp" , "ko" => "kalv" ); print $hash("kat"); #Prints killing print %hash ("kat" ); #Udskriver også killing, men det anbefales at bruge den tidligere version print join ("-", nøgler %hash); # Udskriv alle nøgler. Vil udskrive kat-hund-ko print join ("-", værdier%hash); # Udskriv alle værdier. Vil printe killing-hvalp-kalv print join ("-", %hash); #Vil udskrive kat-killing-ko-kalve-hund-hvalp

  • En funktion er et fragment af eksekverbar kode. Funktionen returnerer altid en eller anden værdi eller UNDEF. Hvis en returværdi ikke er eksplicit angivet af en returerklæring, returneres den sidst evaluerede værdi.

Sub printTwo( print 2 ; ) sub three( 3 ; ) $s = \ print &$s ; #Udskriver 3 $s = \ print &$s ; #Udskriv 21. `2` i funktionskoden, og `1` som værdien returneret af printTwo-funktionen print &printTo #Samme ting

  • Konstant

En konstant repræsenterer en uforanderlig værdi. En konstant er ikke en indbygget sprogtype og emuleres ved hjælp af funktioner. Anvendelse:

Brug konstant MY => 2 ; print MIN;

*MY = \2; print $MY ;

  • Filbeskrivelse

Repræsenterer en pegepind til en fil, enhed eller PIPE, der er åben til skrivning, læsning eller skrivning og læsning.

Anvendelse:

$s = ; #Læs en linje fra STDIN-deskriptoren (standardinput); skalær kontekst.@værdier = ; #Læs alle linjer fra en åben fil tilknyttet FILE-beskrivelsen; liste kontekst. udskriv STDOUT $s ; #Udskriv til STDOUT (standard outputstream)

Regelmæssige udtryk

Perl har stærk understøttelse af regulære udtryk indbygget i det. Dette gør Perl meget effektiv til tekstbehandling. Det meste arbejde med regulære udtryk udføres ved hjælp af operatorerne =~ , m// og s/// .

m//-operatoren bruges til at tjekke for en match. I det enkleste tilfælde vil resultatet af udtrykket $x =~ m/abc/ være sandt, hvis og kun hvis strengen $x matcher det regulære udtryk abc . For eksempel:

Søgning og erstatning udføres ved hjælp af s///-operatoren. Konstruktion $x =~ s/abc/def/; erstatter den første forekomst af det regulære udtryk abc med strengen def .

Eksempel Mening
$x =~ s/abc/def/g; Alle forekomster (som angivet af /g - globalt flag) af understrengen "abc" i $x vil blive erstattet med "def".
$x =~ s/a(.(1,3))c/!$1!/; Den første forekomst af bogstavet "a" i $x, derefter et til tre tegn, og derefter bogstavet "c" vil blive erstattet af disse tegn mellem "a" og "c", omgivet af "!". For eksempel ville "syntaktisk" blive til "synt!cti!".
$x =~ s(^p(erl|ugs))("P" . lc $1)ieg; Her er et eksempel på brug af /e-modifikatoren, hvilket indikerer, at der i stedet for en erstatningslinje vil blive skrevet kode, hvis resultat skal bruges. Alle forekomster af "perl" eller "mops" vil under alle omstændigheder blive erstattet med henholdsvis "Perl" og "Pugs".

Poesi i Perl

Du kan endda skrive poesi i Perl. Et sådant digt, med titlen "Black Pearl", blev nævnt af Larry Wall i et aprilsnar brev til

FØR HOVED: luk døren, hvert vindue & udgang ; vente til tid.

åbne stavebog, studere, læse (scanne, vælge, fortælle os);

  • skriv det, udskriv sekskantet hele hver ur, vend dets længde, skriv igen;
  • dræb edderkopper, pop dem, hug, flækker, dræb dem.

fjern armene, skift, vent og lyt (lytter, vent), sorter flokken (advar derefter "gederne" og dræb "fårene") ;

  • dræbe dem, smid betænkeligheder, skift moral, værdier til side, hver især;
  • dø får! dø for at vende det system, du accepterer (afvise, respektere);

næste trin, dræb næste offer, hvert offer, vent, gentag ritualet, indtil "alle ånder er tilfredse" ;

  • gør det ("som de siger") .
  • www.cpan.org - Arkiv over biblioteker til Perl-sproget
  • www.activestate.com/Products/activeperl Perl-distribution fra ActiveState
  • perl6.ru - information om ny version Perl 6
  • forum.vingrad.ru/Perl-forum.html - Russisksproget forum om Perl på Vingrad
  • ru_perl - Russisktalende fællesskab i LiveJournal
  • kiev.pm - Aktivt fællesskab af Perl-udviklere
  • brainworker.ru - søgesider om Perl
  • Kritisk analyse af PERL-sproget - en detaljeret analyse og kritik af de vigtigste sprogtræk ved Perl fra statiske sprogs synspunkt. Lidt forældet artikel.

Dokumentation

  • perlintro - en kort introduktion og oversigt over Perl
  • perlsyn - Perl-syntaks
  • perlre - regulære udtryk i Perl
  • perlfaq - svar på ofte stillede spørgsmål om Perl (se også russisk oversættelse)

Video

  • YAPC::TV - videoer fra Perl-begivenheder

Undervisning

  • Perl 6 Tutorial - videooptagelser af en række rapporter givet på den ukrainske workshop "Perl Mova" den 23. februar 2008.

Fællesskaber

I Rusland

  • Moscow.pm (Moskva)
  • Vladivostok.pm (Vladivostok)
  • Kazan.pm (Kazan)
  • RostovOnDon.pm (Rostov-on-Don)
  • SPb.pm (St. Petersborg)

I Ukraine

  • Kiev.pm (Kiev)
  • Odessa.pm (Odessa)

I Hviderusland

  • Minsk.pm (Minsk)

Litteratur

  • Randal L. Schwartz, Brian D. Foy og Tom Phoenix Perl: Lær mere dybt. - O"Reilly, "Symbol", 2007. - ISBN 978-5-93286-093-9
  • Paul Whitehead Perl: Et visuelt programmeringskursus = Perl: Dit visuelle plan for opbygning af Perl-scripts. - M.: "Dialektik", 2001. - S. 280. - ISBN 0-7645-3478-5
  • Lincoln D. Stein Udvikling netværksprogrammer i Perl: Per. fra engelsk - M.: 2001. - 752 s. med illustrationer, Williams Publishing House.

Programmeringssproget Perl blev skabt af Larry Wall i 1987, da han arbejdede som systemprogrammør hos det amerikanske firma Unisys. Larrys mål med at udvikle et nyt programmeringssprog afspejles i dets navn - PERL, som senere stod for Practical Extraction and Report Language, det vil sige "et praktisk sprog til at udtrække 'data' og 'skabe' rapporter."

En af legenderne om Perls oprindelse siger, at der på det tidspunkt allerede var et sprog med det navn, så Larry forkortede navnet med et bogstav uden at ændre udtalen. Ironisk nok husker ingen i dag det sprog undtagen historikere, men Perl er kendt over hele verden.

Selvom Larry ifølge en anden version opkaldte sproget, han skabte, efter sin brud.


Larry Wall

Udviklingen af ​​Perl var påvirket af sprogene Ada, Basic, Fortran, Lisp, Pascal og, selvfølgelig, C-sproget absorberede forskellige tendenser inden for datalogi: proceduremæssig, modulær, funktionel og objektorienteret programmering, makrotekst. behandling, og derudover - OS kultur Unix, med sit rige sæt af kommandoer og hjælpeprogrammer, slanke, gennemtænkte arkitektur og ensartede tilgang til datapræsentation.

Unix arv

Unix-miljøet, som det blev udviklet i, havde en afgørende indflydelse på udviklingen af ​​Perl-sproget. Helt fra begyndelsen blev dette operativsystem skabt af en lille gruppe programmører til sig selv. Derfor er principperne indlejret i det fokuseret på bekvemmeligheden ved daglig brug af mennesker: alt blev gjort så funktionelt som muligt, kort og ensartet. For eksempel er de fleste systemindstillinger gemt i almindelig tekstform, så de kan læses og rettes af en person bevæbnet med en simpel tekst editor.

For dem, der er bekendt med Unix-operativsystemet, vil dette materiale ikke være nyt. Men for mange programmører, der arbejder med MS-DOS og Windows, er det vigtigt at blive fortrolig med principperne for programmering baseret på værktøjer ah (softwareværktøjer), som opstod og udviklede sig sammen med Unix OS. De berømte programmører Brian W. Kernighan og Philip Plauger skrev en vidunderlig bog om dem. Her er hovedpunkterne i denne tilgang.

For at løse et bestemt problem udvikles små programmer, som hver udfører en funktion af det problem, der løses.

Problemet løses ved samspil mellem små programmer gennem sekventiel behandling af data fra hver af dem.

Når du udvikler disse små programmer, bør du fokusere på deres maksimale uafhængige brug, så de kan bruges til at løse andre problemer. Således skabes værktøjer (IS) gradvist til yderligere universel brug.

De fleste værktøjer er designet som filterprogrammer, der læser en strøm af data fra standardinput og skriver de behandlede data til standardoutput.

Integration af værktøjer i applikationer udføres ved hjælp af OS-kommandosproget: input-output omdirigering, oprettelse af softwarepipelines (dirigerer outputstrømmen fra et program til input fra et andet).

Hovedformatet for lagrede data til værktøjer er tekstfiler, som er lige så velegnede til programbehandling og menneskelig læsning.

Regulære udtryk bruges til effektivt at behandle svagt struktureret tekstinformation.

Gunstige faktorer

Sproget spredte sig hurtigt blandt Usenet-brugere. På trods af at Unix-operativsystemet (OS), som Perl blev oprettet til, allerede havde adskillige og varierede værktøjer til at behandle tekstinformation (awk, csh, grep, sed og andre), blev det nye sprog forelsket et stort antal systemadministratorer og programmører. Det var nemt at lære og bruge: syntaksen lignede C, Perl-programmer behøvede ikke at blive kompileret først, og kildekoden var nem at ændre. Og vigtigst af alt var det virkelig et meget praktisk sprog: med dets hjælp blev de fleste hverdagsproblemer let løst - fra de enkleste til de meget komplekse.

Aktivt ved at bruge Perl-sproget sendte programmører fra forskellige lande Larry Wall forslag om at tilføje nye funktioner til det eller forbedre eksisterende. Gradvist udviklede Perl sig fra et Unix-tekstbehandlingsværktøj til et kraftfuldt programmeringssystem til generelle formål. I midten af ​​1990'erne, da internettet udviklede sig, blev Perl et yndet værktøj for webmastere til at skabe dynamiske websteder og internetprogrammering.

På grund af dens kraftfulde indbyggede tekstbehandlingsfunktioner er Perl meget brugt til behandling af information i HTML- og XML-formater.

Perl er blevet en vigtig komponent i enhver OS-pakke Unix familie(for eksempel FreeBSD, Linux eller Solaris). Derudover er Perl til dato blevet implementeret til næsten alle moderne hardwareplatforme (supercomputere, RISC, Macintosh, pc, håndholdte computere) og operativsystemer (AIX, Linux, MacOS, MS-DOS, NetWare, OS/2, QNX, Solaris , Windows, VMS og så videre).

Dette gør det muligt nemt at overføre populære Perl-programmer fra et driftsmiljø til et andet.

Dets udbredte brug blev utvivlsomt lettet af det faktum, at det distribueres gratis under betingelserne i en af ​​licenserne: enten GNU GeneralPublic License (GPL) eller Artistic License - dit valg. Men det vigtigste er, at det har alle værktøjerne til perfekt at hjælpe professionelle og uerfarne programmører, når de hurtigt skal løse forskellige system- og applikationsproblemer - fra de enkleste til de mest komplekse. Som et resultat er Perl blevet et af de mest succesfulde projekter i open source-bevægelsen - sammen med Apache, Linux, PHP og Python.

Usædvanligt programmeringssprog

Designprincipperne i Perl er meget forskellige fra dem, der tidligere blev brugt i programmering. Sprogets innovative karakter skyldtes forfatterens, Larry Walls, unikke personlighed og hans varierede interesser.

Mens han studerede på universitetet, modtog Larry Wall en sproglig uddannelse. Derudover var han involveret i programmering og arbejdede i universitetets computercenter.

Måske er Larrys største fortjeneste som forfatter til Perl, at han formåede at skabe et sprog, der tager højde for det naturlige sprogs egenskaber og principper: situationsbestemt polysemi af konstruktioner, rimelig redundans (og på grund af denne stilistiske mangfoldighed), maksimal tilpasningsevne til forskellige niveauer af viden om modersmålstalende, fleksibilitet og udtryksfuldhed af syntaktiske virkemidler. Alt dette giver en særlig kreativ smag til selve processen med at "skrive" på dette sprog.

De, der skriver om Perl-sproget, bruger uforvarende udtrykkene "idiom", "metafor", "synonym", "kontekst" osv., som normalt anvendes på naturlige sprog. Og Larry Wall selv, når han beskriver Perl-sproget, bruger i vid udstrækning sproglige termer: navneord, verbum, sætning, ental og flertal, stedord.

Fremragende sprogforsker B.L. Whorf bemærkede: "Sproget former vores måde at tænke på og bestemmer, hvad vi kan tænke på." Den samme idé bekræftes af J. Bentley i bogen "Pearls of Programmers' Creativity", der beskriver et tilfælde, hvor det var funktionerne i APL-programmeringssproget, der fik udvikleren til at komme med en original løsning på et problem med arrays. I denne forstand begrænser Perl, som et sprog til at realisere programmørens planer, ikke udviklerens fantasi, giver ham maksimal ytringsfrihed og foreslår nogle gange endda ikke-standardiserede løsninger.

Følgende er nævnt som ulemper ved sproget:

Sproglige principper i Perl

Menneskelige sprog har en tendens til at bruge et begrænset sæt af konstruktioner til at udtrykke forskellige betydninger og genbruge dem i forskellige sammenhænge. I overensstemmelse med dette princip har de samme sprogkonstruktioner forskellige betydninger i Perl, og deres entydige forståelse er bestemt af brugskonteksten.

Kontekstprincippet er tæt forbundet med det foregående. Kontekst bruges i naturlige sprog til at fortolke betydningen af ​​et udtryk korrekt. Efter dette princip, i Perl, for eksempel, returnerer mange funktioner en enkelt værdi eller en liste afhængigt af konteksten for opkaldet: om udtrykkets syntaks kræver en enkelt eller flere værdier.

Princippet om semantisk understregning i naturlige sprog tjener til at henlede opmærksomheden på den vigtige del af udsagnet. I dette tilfælde placeres den fremhævede del normalt i begyndelsen af ​​sætningen. I Perl kan programmøren bruge dette princip til at understrege mening ved at vælge en simpel modifikationssætning eller betinget konstruktion, såsom:

$we->skal(do($it)) if $you->want($it); # eller
if $you->want($it) ( $we->skal(gøre($it)))

Princippet om frihed i naturlige sprog antyder, at der altid er flere muligheder for at udtrykke den samme tanke. Som i naturlige sprog kan det samme resultat i Perl opnås på flere måder ved at bruge sprogets forskellige udtryksmidler. Dette er det såkaldte TIMTOWTDI-princip - forkortelsen lyder "Tim Toady" og står for "Der er mere end én måde at gøre det på": "der er mere end én måde at gøre noget på." I overensstemmelse med det vælger hver udvikler den version af sprogstrukturen, der er mere egnet til ham i en bestemt situation, mere i overensstemmelse med hans stil eller niveau af viden om sproget.

Denne tilgang er fuldstændig modsat den strengt formelle opfattelse af programmeringssprog, når hovedmålene for udvikling er entydighed og minimering af sprogkonstruktioner. Men set fra psykologiens og sproglige tænknings synspunkt er den "sproglige tilgang" på mange måder mere produktiv, paradoksal som den kan synes! Det stimulerer trods alt kreativiteten ved at trække på menneskelig erfaring i at bruge naturligt sprog – og det bliver sjovt og interessant at skrive programmer i Perl. Det er sandsynligvis grunden til, at Perl-programmører elsker ordet "sjov" så meget.

Første versioner og "Camel Book"

Larry Wall begyndte at udvikle Perl i 1987, mens han arbejdede som programmør hos Unisys. Version 1.0 blev udgivet og annonceret den 18. december 1987 som en "erstatning" for awk og sed.

Perl 2 blev udgivet i 1988. Den vigtigste nyskabelse i det var en redesignet regulært udtryksmekanisme.

Perl 3, udgivet i 1989, fik evnen til at behandle binære datastrømme.

Oprindeligt var den eneste dokumentation for Perl en enkelt (enormt lang) man-side. I 1991 udkom bogen Programmering Perl (kendt af mange programmører som Camel Book på grund af billedet på omslaget), som blev de facto sprogstandarden.

Samtidig blev sprogversionen "opgraderet" til version 4 - ikke så meget for at indikere væsentlige ændringer, men for at indikere, at denne version af sproget var dokumenteret i bogen. Perl 4 gennemgik en række udgivelser, der endte med Perl 4.036 i 1993.

Perl 5

Udviklingen af ​​Perl 5 begyndte i 1994. Samtidig blev perl5-porters mailingliste oprettet for at koordinere arbejdet med at overføre Perl 5 til forskellige platforme. Det er fortsat det primære forum for Perl 5 udvikling, vedligeholdelse og portering.

Perl 5.000 blev udgivet den 17. oktober 1994. Det indeholdt en fuldstændig omskrevet tolk, samt mange nye sprogfunktioner såsom objekter, referencer, lokale variabler (mit $var_name) og moduler. Moduler var en særlig vigtig del, da de gav en mekanisme til at udvide sproget uden at ændre tolken. Dette gjorde det muligt for tolken at stabilisere sig, men samtidig gav det almindelige Perl-programmører mulighed for at tilføje nye funktioner til sproget. Perl 5 er stadig i aktiv udvikling den dag i dag.

Perl 5.001 blev udgivet den 13. marts 1995. Perl 5.002 blev udgivet den 29. februar 1996 med ny prototypeunderstøttelse. Dette gjorde det muligt for modulforfattere at oprette funktioner, der opførte sig ligesom Perls indbyggede funktioner. Perl version 5.003 blev udgivet den 25. juni 1996 og løste sikkerhedsproblemer.

En af de vigtigste udviklinger i Perl 5's historie skete uden for selve sproget og var en konsekvens af modulunderstøttelse. Den 26. oktober 1995 begyndte CPAN (Comprehensive Perl Archive Network) sit arbejde, som blev et lager af Perl-moduler samt kildekoden til selve sproget. I øjeblikket har netværket mere end 25.000 moduler skabt af mere end 8.000 programmører.

Perl 5.004 blev udgivet den 15. maj 1997 og indeholdt blandt andet UNIVERSAL-pakken, som gav sproget et kerneobjekt, hvorfra alle klasser automatisk blev afledt. Muligheden for at forespørge modulversion er også inkluderet. Ud over dette begyndte Perl at understøtte Microsoft Windows, samt en række andre styresystemer.

Perl 5.005 blev udgivet den 22. juni 1998. Denne udgivelse indeholdt adskillige forbedringer af processoren til regulære udtryk, nye backend-hooks ved brug af B::*-modulerne, qr// quote-operatoren for regulære udtryk, et stort udvalg af andre nye moduler og understøttelse af en række operativsystemer, bl.a. BeOS.

2000'erne

Perl 5.6 blev udgivet den 22. marts 2000. Større ændringer omfattede understøttelse af 64-bit systemer, repræsentation af strenge i Unicode-standarden, understøttelse af store filer (filer større end 2 GB) og søgeord vores. Under udviklingen af ​​Perl 5.6 blev det besluttet at ændre versionsnavneskemaet til et mere, der ligner andre open source-projekter. kildekode. Version 5.005_63 blev efterfulgt af version 5.5.640; efter planen skulle versioner under udvikling tildeles ulige numre, stabile versioner - lige numre.

I 2000 udsendte Larry Wall en opfordring til samfundet om aktivt at diskutere forslag til den næste version af Perl. Resultatet af denne diskussion var 361 RFC'er (Request for Comments), der blev brugt i udviklingen af ​​Perl 6.

I 2001 begyndte arbejdet med et endeligt dokument, der opsummerer forslag til en ny generation af Perl. Resultatet blev ikke præsenteret som et formelt dokument, men som et resumé af alle RFC'er. På dette tidspunkt eksisterede Perl 6 udelukkende som en sprogbeskrivelse.

Perl 5.8 blev først udgivet den 18. juli 2002 og har modtaget årlige opdateringer siden da. Den seneste version af Perl 5.8, nummereret 5.8.9, blev udgivet den 14. december 2008. Perl 5.8 forbedrede Unicode-understøttelse, tilføjede en ny I/O-implementering, tilføjede multithreading-understøttelse, øget numerisk præcision og tilføjede flere nye moduler.

I 2004 begyndte arbejdet med synopsis, der oprindeligt var tænkt som en række dokumenter, der opsummerer det endelige dokument nævnt ovenfor. Men efterhånden blev denne serie af dokumenter til Perl 6-specifikationen. I februar 2005 begyndte Otrius Tan at arbejde på Pugs, en Perl 6-tolk skrevet i Haskell. Dette var det første rigtige forsøg på at gøre Perl 6 til virkelighed. Dette forsøg døde ud i 2006.

Når du er over 20

Den 18. december 2007, Perl 1.0's 20 års jubilæum, blev Perl 5.10.0 udgivet. Denne version indeholdt en række bemærkelsesværdige innovationer, der bragte den tættere på Perl 6. En af disse innovationer var den nye skifte udsagn(kaldet "givet"/"hvornår"), opdatering af regulære udtryk og den "smarte" matchende operator "~~".


"Perle" jubilæum

Omkring dette tidspunkt begyndte udviklingen for alvor på en ny implementering af Perl 6, kendt som Rakudo Perl, udviklet i forbindelse med den virtuelle Parrot-maskine. Siden november 2009 er Rakudo Perl blevet opdateret regelmæssigt hver måned og er i øjeblikket den mest komplette implementering af Perl 6.

En væsentlig ændring i Perl 5-udviklingsprocessen skete med udgivelsen af ​​Perl 5.11. Udviklingsfællesskabet er flyttet til en månedlig udgivelsescyklus, med udgivelsesdatoer planlagt tre måneder i forvejen.

Den 12. april 2010 blev Perl 5.12.0 frigivet til offentligheden. Bemærkelsesværdige funktioner omfatter understøttelse af den nye pakke NAME VERSION-syntaks, Yada Yada-operatøren (for at markere pladsholderkode, der endnu ikke er blevet implementeret), komplet løsning"Problems of 2038" (Y2038), overbelastning af regulære udtryksoperatører, understøttelse af DTrace (dynamic tracing framework) og fuld understøttelse af Unicode 5.2-standarden.

Perl 5.12.2 blev udgivet den 7. september 2010, og Perl 5.12.3 blev udgivet den 21. januar 2011. Disse udgivelser indeholder modulopdateringer samt nogle dokumentationsændringer. Version 5.12.4 blev udgivet den 20. juni 2011. Den seneste version af denne filial, 5.12.5, blev udgivet den 10. november 2012.

Sidste femårsplan

Perl 5.14 blev udgivet den 14. maj 2011. JSON-understøttelse blev indbygget fra og med version 5.14.2. Den seneste version af denne filial, 5.14.4, blev udgivet den 10. marts 2013.

Perl 5.16 blev udgivet den 20. maj 2012. En væsentlig nyskabelse er evnen til at specificere den ønskede version af Perl, der skal emuleres, hvilket giver brugerne mulighed for at opdatere Perl og samtidig bevare funktionaliteten af ​​ældre scripts, der ellers ville blive inkompatible med den nye version. Perl 5.16 kerne understøtter Unicode 6.1.

Perl 5.18 blev udgivet den 18. maj 2013. Væsentlige innovationer inkluderer nye dtrace hooks, leksikalske funktioner, en stigning i antallet af funktioner, der er inkluderet i kernen, en revision af implementeringen af ​​hashes af sikkerhedsmæssige årsager, understøttelse af Unicode 6.2.

Den 27. maj 2014 blev en ny stabil version frigivet - Perl 5.20.0. Udviklingen tog cirka 12 måneder, startende med Perl 5.18.0, og indeholder cirka 470.000 ændrede linjer blandt 2.900 filer fra 124 forfattere.

Perl 5.22.1 blev udgivet i december 2015. Udviklingen tog 6 måneder.

Den 9. maj 2016 blev en ny stabil version af programmeringssproget Perl 5.24.0 frigivet. Udviklingen tog cirka 11 måneder, startende med Perl 5.22.0, og indeholder cirka 360.000 ændrede linjer blandt 1.800 filer fra 77 forfattere.

Ifølge data fra juli 2016 viste TIOBE-indekset, som måler væksten i popularitet af programmeringssprog, Perl rangeret som nr. 9:

Det er 2 stillinger højere end sidste år.

Perl 6

Som nævnt i Wikipedia er Perl 6 den næste version af Perl-programmeringssproget (fra et strukturelt synspunkt er Perl 6 mere praktisk at betragte som et uafhængigt programmeringssprog). Det er en revolutionær udvikling af sproget, sidstnævnte blev skrevet næsten "fra bunden". For første gang i Perls historie begyndte udviklingen af ​​en ny version med skrivning af specifikationer, som stadig undergår ændringer den dag i dag.

Perl 6 opretter, når et program kompileres, bytekode, som derefter udføres af en virtuel maskine. Den samme tilgang bruges i Java- og .NET Framework-teknologier.

Faktisk kan vi tale om et nyt sprog, der har fælles rødder med den tidligere version af Perl, men som ikke er kompatibelt med det, selvom specifikationerne antog en kompatibilitetstilstand.

Udviklingen af ​​Perl 6 begyndte i 2000 og fortsætter den dag i dag.

Perl var oprindeligt beregnet til at være et værktøj, der i ydeevne kan sammenlignes med kompilerede Unix-værktøjer. Driftshastigheden skulle sikres ved, at Perl-runtime-systemet læser Perl-programmets kildekode og kompilerer den på farten, for derefter straks at fortolke det kompilerede program.

Larry Wall forkyndte i spøg en programmørs tre hoveddyder: dovenskab, utålmodighed og indbildskhed. Efter hans mening er Perl designet til at opfylde disse udviklerkvaliteter.


Hvad er Perl? Dette er en forkortelse for programmeringssproget Practical Extraction and Report Language. Hvad menes med "udtræk" og "rapporter"? Hvorfor praktisk sprog? Hvad er det til? Hvilke problemer kan løses med dens hjælp? Disse og mange andre spørgsmål opstår naturligvis for enhver person, der i det mindste er lidt fortrolig med datalogi, når han første gang møder et nyt programmeringssprog. Dette kapitel var tænkt som et svar på spørgsmålene ovenfor, da programmøren i sidste ende beslutter, om det er værd at vide, hvad et programmeringssprog kan, hvad det er beregnet til (og tiden for universelle sprog synes at være forbi). bruge tid på at lære det. Selvom der også her opstår spørgsmål om letheden og hastigheden ved at mestre et nyt sprog, tilgængeligheden af ​​compilere, eksistensen af ​​dens supporttjeneste, omkostninger osv. Dette vil også blive diskuteret i dette kapitel, som vil introducere læseren til den store verden af Perl-programmering og vil blive udgangspunktet, hvorfra, vi håber, han hurtigt og uden at se sig tilbage vil gå ind i det og forblive i det for evigt.

Perl-sproget blev født i dybet af Unix-operativsystemet som en reaktion fra en talentfuld programmør på begrænset mulighed standard midler systemadministration i dette driftsmiljø. Forfatterne er godt klar over, at de fleste læsere kender Unix, måske kun fra titlerne på bøger, der ligger på butikshylderne, da traditionen med at studere informationsteknologi i vores land er mere forbundet med operativsystemer i Microsoft Windows-familien [Under familien] af operativsystemer Microsoft systemer Windows refererer til styresystemerne Windows 95/98/NT.] end til UNIX-systemet, som er grundlaget for at studere datalogi på vestlige universiteter. Derfor vil vi for læsere, der er opdraget i Windows-traditionerne, lave en lille digression og kort beskrive proceduren for administration af UNIX, som er radikalt forskellig fra lignende arbejde i Windows-operativsystemet.

Under administration henviser til at tilpasse operativsystemet ved at indstille værdierne for dets parametre, så det opfylder behovene hos en individuel bruger eller gruppe af brugere. I Windows-familiesystemer udføres sådant arbejde ved hjælp af registreringsdatabasen, som er en database med binære data, og et særligt program kaldet regedit bruges til at ændre parametre. I UNIX system konfigurationen udføres gennem specielle konfigurationsfiler, som er almindelige tekstfiler, og alle ændringer foretages ved at udføre kommandoer skrevet i et specielt shell-sprog og som regel udført fra kommandolinjen. (For adskillige år siden var styresystemet på personlige computere udbredt. MS-DOS system Microsoft, som også brugte kommandolinjen til at indtaste kommandoer, så læseren, der arbejdede på dette styresystem, vil være bekendt med kommandolinjen.) I systemet UNIX bruger kan oprette brugerdefinerede kommandoer baseret på kommandoer skal tolk, gem dem i almindelige tekstfiler og udfør dem efterfølgende ligesom almindelige standard operativsystemkommandoer via kommandolinje. Det skal bemærkes, at skallen på UNIX-operativsystemet er en fortolker, og derfor har brugerkommandoer et andet navn - de kaldes scenarier eller scripts(manuskript). Administratoren af ​​UNIX-operativsystemet skal skrive et stort antal scripts, der behandler andre scripts - tekstfiler. Til disse formål, ud over shell-kommandosproget, bruges der sædvanligvis specielle behandlingsprogrammer tekstfiler:

  • awk er et mønstertilpasningsprogram og rapportgenerator;
  • sed er en batch tekstfil editor.

Begge disse programmer er filtre, der sekventielt læser linjer fra inputfiler og udfører de handlinger, der er specificeret af programmernes kommandoer, der gælder for linjen. De vigtigste handlinger er at vælge strenge af tegn i henhold til givne mønstre, erstatte dem i henhold til bestemte regler og generere nye filer.

Nu kan vi gå videre til genstanden for vores undersøgelse - Perl-sproget, især da, som det forekommer os, læseren allerede burde forstå, hvorfor det kaldes sproget for ekstraktion og rapportering. Og vi vil starte med historien om dens skabelse og udvikling, som i det væsentlige giver os mulighed for mere fuldt ud at forstå dens indhold.

1.1. Perl-sprogets historie

Perl blev udviklet af Larry Wall i 1986, da han var systemadministrator for et UNIX-projekt relateret til oprettelsen af ​​et sikkert netværk på flere niveauer, der forenede flere computere spredt ud over lange afstande. Arbejdet var udført, men det krævede at generere rapporter ud fra stort antal filer med talrige krydshenvisninger imellem dem.

Larry havde oprindeligt til hensigt at bruge awk-filteret til dette formål, men det viste sig, at sidstnævnte ikke kunne kontrollere åbningen og lukningen af ​​et stort antal filer baseret på filplaceringsoplysningerne i dem. Hans første tanke var at skrive et særligt systemværktøj, der løste problemet, men da han huskede, at han før det allerede havde skrevet flere hjælpeprogrammer til at løse problemer, der ikke kunne håndteres af standard UNIX-værktøjer, tog han en radikal beslutning - at udvikle et programmeringssprog som ville kombinere sig selv evnen til at behandle tekstfiler (sed), generere rapporter (awk), løse systemproblemer (shell) og lav-niveau programmering tilgængelig i C-sproget. Resultatet af denne beslutning var Perl-sproget, tolken til som er skrevet i C.

Da han skabte Perl-sproget, var han ifølge Larry Wall selv drevet af dovenskab - ikke i bogstavelig forstand, men i den forstand, at han for at løse det problem, han stod over for, skulle skrive en lang række programmer i forskellige sprog, der er en del af UNIX-værktøjerne, og det er nok en kedelig opgave.

Det nye programmeringssprog kombinerede mulighederne for systemadministration og filbehandling - to hovedopgaver, der normalt løses ved programmering på et UNIX-system. Desuden skal det bemærkes, at Perl-sproget dukkede op af praktiske årsager, og ikke på grund af ønsket om at skabe endnu et "smukt" værktøj til at arbejde i UNIX, hvorfor det blev udbredt blandt systemadministratorer, da Larry Wall gjorde det tilgængeligt for en bred vifte af brugere. Med fremkomsten af ​​Perl-sproget blev det muligt at løse problemer ved hjælp af et værktøj og ikke spilde tid på at lære flere sprog i UNIX-programmeringsmiljøet.

Den første version af sproget indeholdt ikke mange af de funktioner, der kan findes i seneste version Perl, som læseren vil blive bekendt med i vores bog, er identificeret som version 5.005_03 og anses for at være stabil. Sproget omfattede oprindeligt:

  • simpel søgning efter strengmønstre (skabeloner) i filer;
  • filbeskrivelser;
  • skalære variabler;
  • formater.

Al dokumentation fik plads på 15 sider, men Perl løste problemer hurtigere end sed eller awk, og begyndte hurtigt at blive brugt ikke kun til at løse problemer med systemadministration.

Senere lånte Larry Wall selv en pakke til at arbejde med regulære udtryk fra Henry Spencer og modificerede den til Perl-sproget. Anden funktionalitet blev ikke kun udviklet af Larry Wall, men også af hans venner og kolleger og inkluderet i sproget. Udgivelse på internettet førte til fremkomsten af ​​et fællesskab af ligesindede, der ikke kun udnyttede, men også udviklede sproget. Det fortsætter med at udvikle sig intensivt den dag i dag gennem udvikling af pakker, der implementerer nye anvendelser af sproget til udvikling af informationsteknologier. I tabel 1.1 viser dynamikken i fremkomsten af ​​nye versioner af Perl-sproget, startende med den allerførste:

Tabel 1.1. Perl sprogversioner og udgivelsesdatoer

Version Udgivelsesdato
perl 1 januar, 1988
perle 2 juni, 1988
perle 3 oktober, 1989
perle 4 marts, 1991
perl 5 oktober, 1994

I øjeblikket, som tidligere nævnt, er den stabile version af Perl 5.005_03, men version 5.005_67 eksisterer allerede. De kan alle fås fra hovedkontoret websted, som understøtter Perl-sproget, kl http://www.perl.com/ .

1.2. Karakteristika for Perl

Perl er et fortolket sprog, der er optimeret til at se indholdet af tekstfiler, udtrække information fra dem og generere rapporter baseret på disse oplysninger, og er simpelthen et godt sprog til at udføre mange UNIX-systemadministrationsopgaver. Det har mange fordele som scriptsprog generelt formål, som manifesteres gennem dets karakteristiske træk og evner.

Først i Perl-sprogets fortjenestekæde vil vi kalde det fortolkbarhed. Naturligvis vil nogle programmører, efter at have læst dette, sige: "Nå, vi har fundet vores fordele." Nå, bemærkningen er væsentlig, hvis vi betragter Perl som et sprog til at skabe store informationssystemer, og tåler absolut ikke kritik, hvis du husker, hvad det er beregnet til - opgaver med administration og behandling af tekstfiler - små scripts, der løser utraditionelle problemer, hvis programmering kan kræve interaktion af flere specialiserede sprog . Udvikling af sådanne løsninger ved hjælp af kompilerede programmeringssprog ville kræve meget mere tid end at bruge et enkelt fortolket: trods alt er programudviklingscyklussen på et sådant sprog kortere og enklere end i et kompileret. Vi bygger gradvist et program ved at tilføje de nødvendige udsagn og får straks resultaterne, når det er færdigt: perl-fortolkeren kompilerer gradvist alle udsagn til intern bytekode, og programmet er klar til at blive eksekveret, så snart det sidste punktum (eller rettere sagt semikolon, afsluttende sidste operator). For små programmer er dette en stor fordel, da fejlretning tager meget tid. Ja, et fortolket program vil naturligvis køre langsommere end et program, der præsenteres i et binært filformat og udføres uden forudgående behandling af fortolkeren, men hvis behovet opstår, så kan Perl-løsningen bruges som prototype til et kompileret sprog, f.eks. C. Opsummering af alt Når alt dette er sagt, kan vi konkludere, at Perl giver dig mulighed for nemt og hurtigt at få den nødvendige løsning på et problem, ved at kombinere elementer fra kompilerede og fortolkede programmeringssprog.

Anden Fordelen ved at bruge Perl til relevante opgaver (vi mener netværk) er dens tilgængelighed for de fleste serverplatforme:

  • næsten alle varianter af UNIX;
  • MS-DOS;
  • Windows NT;
  • Windows 95/98;
  • OS/2;
  • Macintosh.

Til alle disse platforme er perl-tolke blevet udviklet og distribueres frit sammen med dokumentation for deres installation og drift, hvilket på en behagelig måde adskiller den fra anden software. Og her er det på sin plads at sige et par ord om betingelserne for brug og distribution af selve Perl og de programmer, der er udviklet på den. (Se kapitel 16 for information om, hvor du kan finde og få Perl-tolken.)

En måde at distribuere gratis software på, såsom perl-tolken, er at bruge GNU General Public License. I henhold til vilkårene i denne licens, kildefilerne software produkt distribueres helt frit og kan bruges af alle. Alle versioner af programmet, der er oprettet ved at ændre denne kode, skal dog også frigives under betingelserne i GNU General Public License, dvs. kildefilerne til det nye produkt skal gøres tilgængelige for alle, der ønsker at have dem. Dette er ofte nok til at beskytte interesserne hos forfatteren af ​​det originale softwareprodukt, men kan føre til et stort antal afledte versioner af det originale produkt, hvilket fører til "fremmedgørelse" af forfatteren til det originale produkt fra processen om at ændre sit hjernebarn. På grund af det store antal forskellige versioner bliver det desuden svært for brugerne at afgøre, hvilken version af pakken der i øjeblikket er endelig, om de scripts, de skriver, i tilfælde af Perl, vil fungere korrekt med den version, de har, osv.

På grund af manglerne ved GNU-licensen skitseret ovenfor, frigives Perl-tolke under vilkårene i den kunstneriske licens, som er en variation af GNU-licensen, og dens betydning er, at enhver, der frigiver en pakke, der er afledt af Perl, klart skal indse, at hans pakken er ikke en ægte Perl-pakke. Derfor skal alle ændringer omhyggeligt dokumenteres og noteres, eksekverbare moduler, hvis de ændres, skal omdøbes, og de originale moduler skal distribueres sammen med ændret version. Effekten af ​​sådanne forhold er, at forfatteren til det originale produkt altid identificeres som dets ejer. Når du bruger den kunstneriske licens, forbliver alle vilkår i GNU General Public License i kraft, hvilket betyder, at den fortsat gælder.

Tredje Fordelen ved Perl-sproget er dets praktiske orientering, dvs. det blev skabt af praktiske årsager til at løse problemer med administration og applikationsudvikling til UNIX, hvilket betyder, at det har følgende vigtige egenskaber:

  • fuldstændighed;
  • brugervenlighed;
  • effektivitet.

Perls fuldstændighed refererer til dets evne til at løse alle problemer, der opstår i et UNIX-system i forbindelse med dets administration. Og det er sandt! Når alt kommer til alt, har Perl-sproget, som nævnt ovenfor, absorberet alt bedste muligheder standard UNIX-administrationsværktøjer anført i tabellen. 1.2.

Tabel 1.2. Standard UNIX-administrationsværktøjer

Programmeringssprog Karakteristisk
awk Sprog til at udtrække information fra tekstfiler
C Et kompileret sprog til generelle formål til løsning af problemer på lavt niveau
skal Det vigtigste kommandosprog til at køre programmer og scripts skrevet på andre programmeringssprog
sed Stream editor til behandling af tekstfiler

Disse værktøjer bliver fortsat brugt, fordi hver af dem er et fremragende værktøj til at udføre de opgaver, de er beregnet til, men alt, hvad der kan opnås ved at kombinere disse værktøjer, kan implementeres i et enkelt Perl-program med kun læring en sprog. Men Perls muligheder er ikke begrænset til kun administrative opgaver. Plug-in-pakker og -moduler giver dig mulighed for nemt og hurtigt at løse andre opgaver, som du muligvis skal bruge programmeringssproget C til. Fra og med version 5.0 understøtter Perl-sproget objektorienteret programmeringsteknologi, og pakker og moduler kan formateres som. objekter og bruges uden at kende koden, de indeholder (selvom du bliver nødt til at studere en stor mængde af objektmodeller med sine egne egenskaber og metoder).

Perl er et sprog, som en programmør kan gør dit job, og Perl tilbyder flere måder at implementere det på til at udføre den samme opgave. Nogle af dem er mere komplekse, andre mindre. Udvikleren kan vælge den, der er mere forståelig og lettere for ham at implementere, uden at spilde tid på at lære mere komplekse funktioner. Dette er brugervenligheden af ​​Perl, som gør det muligt at bruge det både til at implementere engangsværktøjer og til at skabe komplekse, ofte brugte applikationer.

Perl er et ligetil sprog, hvilket betyder, at simple programmer ikke skal skrives i form af hovedprocedurer, som det er almindeligt i de fleste proceduresprog programmering, eller i form af en klasse, som det er sædvanligt i objektorienterede programmeringssprog, dvs. der er ingen grund til at spilde tid på yderligere formatering kildekoden til programmet, men begynd bare at skrive Perl-operatører, som straks vil blive behandlet af tolken. Det er her effektiviteten af ​​Perl-programmeringssproget ligger.

Fjerde Fordelen ved at bruge Perl kommer fra dets yderligere muligheder, der giver dig mulighed for at udføre mere end blot traditionelle UNIX-administrationsopgaver og tekstfilbehandling.

Og her skal du først og fremmest være opmærksom på den simple medtagelse af procedurer for opkald til C-biblioteket i Peri-programmet, som giver dig mulighed for at bruge kæmpe mængde kode skrevet til dette populære sprog. Perl-distributionen inkluderer hjælpeprogrammer, der konverterer C-biblioteksoverskrifter til de tilsvarende Perl-sprogækvivalenter. Konvertering udføres ved hjælp af XS-grænsefladen, som er enkel software interface, som konverterer C-funktions kaldende miljø til Perl rutineopkaldsmiljøet. Efterfølgende opkald til C-funktioner adskiller sig ikke fra opkaldsrutiner i selve Perl. Desuden er Perl-programmer version 5.0 nemt integreret i C- og C++-applikationer gennem grænsefladen implementeret i perl_call_*-funktionssættet.

For at arbejde med databaser kan du selv skrive det relevante program på C-sproget, eller du kan bruge frit distribuerede moduler til yderligere udvidelser af Perl-funktioner, herunder arbejde med adskillige populære systemer databasestyring: Oracle, Ingres, Informix, Interbase, Postgre, Sybase 4 osv.

Perls evne til at arbejde med TCP/IP-sockets har gjort det populært at implementere informationssystemer til interaktion med netværksservere af enhver type, der bruger sockets som en mekanisme til at udveksle information. Det var denne funktion, kombineret med brugen af ​​Perl til at skabe CGI-scripts, der førte til sprogets udbredte adoption på adskillige andre platforme.

Og for at afslutte opremsningen af ​​fordelene ved Perl, lad os henlede læserens opmærksomhed på femte fordelen ved at bruge det: da dette sprog oprindeligt blev distribueret frit, er al den akkumulerede dokumentation også tilgængelig helt gratis, og da Perl, som et scriptsprog, er meget populært, er der et hav af dokumentation på internettet om dets anvendelse til at løse forskellige problemer.

(Nogle adresser kan findes i kapitel 16.)

1.3. Anvendelser af Perl

Perl er mest udbredt til udvikling af systemadministrationsværktøjer, men for nylig har det vundet enorm popularitet inden for internetapplikationsudvikling: CGI-scripts,

Systemer til automatisk behandling af e-mail og support til websteder. I dette afsnit vil vi kort beskrive Perls muligheder inden for hvert af disse områder.

UNIX-systemunderstøttelse

Som tidligere nævnt var det opgaven med at kombinere mulighederne i forskellige UNIX-systemadministrationsværktøjer i ét programmeringssprog, der tjente som drivkraften til udviklingen og skabelsen af ​​Perl-sproget. Den er udviklet på en sådan måde, at den optimerer løsningen af ​​netop disse problemer uden at ty til andre værktøjer. På nuværende øjeblik Perl er det primære UNIX-administrationsværktøj, der kan udføre arbejdet med flere andre traditionelle administrationsværktøjer. Det er denne alsidighed, der har bidraget til dens brede distribution blandt systemadministratorer og UNIX-programmører, især da den normalt løser problemer hurtigere end andre lignende værktøjer.

CGI scripts

En af de første teknologier til implementering af dynamiske effekter, der fortsat er meget udbredt på internettet i dag, er teknologien til CGI-scripts, hvis essens er behandlingen af ​​information modtaget fra brugeren, som han indtaster i formfelterne i en HTML side set ved hjælp af et browserprogram. Oplysninger fra formularfelterne sendes til serveren vha HTTP protokol enten i overskriften eller i forespørgslens brødtekst og behandles af et script, som efter at have analyseret de modtagne data udfører visse handlinger og genererer et svar i formularen ny side HTML sendt tilbage til klienten. Et script kan faktisk skrives i et hvilket som helst programmeringssprog, der har adgang til såkaldte miljøvariabler, men Perl-scripts er mest udbredt på grund af Perl-sprogets lette oprettelse og optimeringsmuligheder ved behandling af tekstfiler. Der er bogstaveligt talt tusindvis af eksempler på dynamisk CGI-programmering i Perl på internettet.

Dens store popularitet for implementering af lignende opgaver på UNIX-internetservere har ført til, at udviklere af internetservere, der kører på andre operativsystemer, begyndte at inkludere muligheden for at forbinde Perl-scripts til deres systemer. I øjeblikket kan de bruges på Microsofts Internet Information Server til Windows-operativsystemer og på Apache-, NCSA- og Netscape-servere til UNIX-operativsystemet.

Mail behandling

En anden populær applikation til Perl er automatiseret internet-e-mail-behandling. Perl-scripts kan bruges til at filtrere mail baseret på adresse eller indhold, automatisk oprette mailinglister og gøre mange andre ting. En af de mest populære programmer til at arbejde med e-mail er Majordomo-programmet, fuldt implementeret i Perl.

Perls muligheder på dette område er enorme og begrænses kun af udviklerens fantasi. Du kan for eksempel skrive et script, der behandler indgående post og tilføjer beskeder til en forudbygget nyhedsside, sorterer dem i relevante emner, hvilket giver dig mulighed for hurtigt at scanne din post uden at spilde tid på at læse hver modtaget korrespondance. Efter en vis tid slettes beskeder fra siden.

Webside support

Et websted er intet andet end en struktureret opbevaring af HTML-sider, som er almindelige tekstfiler i et bestemt specielt format, som forstås af programmer, der ser deres indhold. Perl er optimeret til at behandle et stort antal tekstfiler, så dets brug til at analysere og automatisk ændre indholdet på et websted følger naturligvis af de opgaver, som det specifikt er lavet til. For eksempel kan det bruges til at løse problemet med at kontrollere rigtigheden af ​​krydshenvisninger på siderne på et websted, samt til at kontrollere rigtigheden af ​​links til andre websteder (selvom her skal du bruge dets netværksfunktioner til arbejde med stikkontakter).

Dens socket skrive- og læsefunktioner giver dig mulighed for at bruge Perl-scripts til at kommunikere med andre noder og hente information baseret på HTTP-protokollen. Det skal bemærkes, at der endda er servere skrevet i Perl. Som tidligere nævnt kan netop disse funktioner i Perl bruges til at fjerne links fra HTML-sider på et websted til ikke-eksisterende andre websteder.

Perl kan også arbejde med FTP-protokollen. Dette giver dig mulighed for at automatisere hentning af filer fra andre noder, og i kombination med dets tekstfilbehandlingsmuligheder giver dig mulighed for at skabe komplekse informationssystemer.

I dette kapitel forsøgte vi kort at karakterisere selve Perl-sproget, skitsere hovedområderne for dets anvendelse og tiltrække læserens opmærksomhed på dets videre undersøgelse og implementering i deres egen praksis. I sidste ende er det kun programmøren selv, der bestemmer, om han har brug for det passende sprog eller ej. Vi tror, ​​at vores kære læser allerede har truffet sit valg, og vi håber, at han ikke forlader os indtil bogens allersidste side.

Spørgsmål til selvkontrol

1. Angiv det fulde navn på Perl-sproget.

2. Hvad var drivkraften til udviklingen og skabelsen af ​​Perl?

3. Hvad er formålet med Peri-programmet?

4. Hvad er fordele og ulemper ved fortolkede sprog?

5. Angiv de vigtigste fordele ved Perl-sproget.

6. Liste applikationerne af Perl.