Perl

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 25. maj 2021; checks kræver 70 redigeringer .
Perl
Sprog klasse programmeringssprog
Dukkede op i 1987 [3]
Forfatter Larry Wall
Udvikler Larry Wall [1] og The Perl Foundation [d] [2]
Filtypenavn _ .pl[4] eller [4].pm
Frigøre 5.36.0 (28. maj 2022 ) ( 2022-05-28 )
Type system svag dynamik
Blev påvirket C++ , C [1] , sed , AWK , BASIC , Lisp og UNIX-skallen
påvirket Raku , Ruby , PHP , Groovy , JavaScript
Licens Artistic License [d] [5]og GNU General Public License, version 1.0 eller nyere [d] [6][7]
Internet side perl.org
dev.perl.org/perl5/
OS Linux [8] , macOS [8] , Microsoft Windows [8] , Solaris [8] , AIX [8] og HP-UX [8]
 Mediefiler på Wikimedia Commons

Perl  er et fortolket dynamisk programmeringssproghøjt niveau skabt af Larry Wall , en lingvist af uddannelse. Sprogets navn står officielt for Practical Extraction and Report Language ("praktisk sprog til at udtrække data og kompilere rapporter") [9] , og i spøg - som Pathologically Eclectic Rubbish Lister ("patologisk eklektisk affaldslister") [9] ; sprogudviklere betragter ikke dets navn som et akronym [10] . Oprindeligt bestod navnet af fem tegn og faldt i denne form nøjagtig sammen med det engelske ord perle ("perle"). Men så blev det kendt, at et sådant sprog eksisterede (se PERLE ), og bogstavet "a" blev fjernet. Symbolet på Perl-sproget er kamelen  - ikke særlig smuk, men 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, herunder arbejde med regulære udtryk indbygget i syntaksen. Perl har arvet mange egenskaber fra C , AWK , UNIX shell -scriptsprog .

Perl er berømt for sin enorme samling af CPAN -tilføjelsesmoduler (ca. 200.000 ), der i høj grad forbedrer dens muligheder. CPAN-samlingen er placeret på https://www.cpan.org .

Oversigt

Perl er et alment programmeringssprog, der oprindeligt blev skabt til tekstmanipulation, men som nu bruges til en lang række opgaver, herunder systemadministration , webudvikling , netværksprogrammering , spil, bioinformatik og udvikling af grafisk brugergrænseflade .

Sproget kan karakteriseres mere som praktisk (brugervenligt, effektivitet, fuldstændighed) end smukt (elegance, minimalisme) [11] . De vigtigste fordele ved sproget er understøttelse af forskellige paradigmer ( proceduremæssige , objektorienterede og funktionelle programmeringsstile), hukommelseskontrol (ingen loop-baseret skraldeopsamler), indbygget understøttelse af tekstbehandling, samt en stor samling af tredje -parti moduler .

Ifølge Larry Wall har Perl to mottoer. Den første er " Der er mere end én måde at gøre det på ", også kendt under forkortelsen TMTOWTDI . Det andet slogan er " Lette ting skal være lette og svære ting skal være muligt ".

Funktioner

Den generelle struktur af Perl sporer i store træk dens oprindelse til C -sproget . Perl er af proceduremæssig karakter med variabler , tildelingsudtryk , kodeblokke adskilt af krøllede parenteser , kontrolstrukturer og funktioner .

Perl låner også en række funktioner fra UNIX shell programmeringssprog . Alle variabler er markeret med ledende tegn, der udtrykker nøjagtigt variablens datatype i den sammenhæng (f.eks. skalar, matrix, hash). Det er vigtigt, at disse tegn tillader variabler at blive interpoleret i strenge. Perl har mange indbyggede funktioner, der giver værktøjer, der ofte bruges til shell-programmering, såsom sortering eller opkald af systemtjenester.

Perl låner arrays fra Lisp , regulære udtryk fra AWK og sed , og hashes ("associative arrays") fra AWK. Regulære udtryk gør mange parsing-, tekstbehandlings- og datamanipulationsopgaver nemmere.

Perl 5 tilføjede understøttelse af komplekse datatyper, førsteklasses funktioner ( lukker som en værdi) og en objektmodel. Sidstnævnte inkluderer referencer , pakker, udførelse af metoder fra en klasse, variabler med en leksikalsk omfangsdeklaration og compiler - direktiverstrict (f.eks. ). Den største forbedring introduceret i Perl 5 var muligheden for at sætte kode i "pakker" ( pakke ) som moduler til genbrug. Larry Wall bemærkede senere, at "Hele formålet med Perl 5's modulære system var at fremme væksten af ​​Perls kultur, ikke kodelinjer" [12] .

Alle versioner af Perl udfører automatisk dataindtastning og automatisk hukommelsesstyring. Fortolkeren kender typen og hukommelseskravene for hvert programobjekt, den tildeler og frigør hukommelse ved at foretage referencetælling . Oversættelsen af ​​en datatype til en anden - for eksempel et tal til en streng - sker automatisk under kørsel, umulige datatypeoversættelser fører til en fatal fejl.

Arbejde i Windows

Microsoft Windows-brugere bruger normalt distributioner med prækompilerede binære filer, såsom ActivePerl eller Strawberry Perl , da kompilering af Perl fra kilden på det OS  ikke er en nem opgave. Opgaven kan gøres lettere af Cygwin .

Historie

Første versioner

Larry Wall begyndte at udvikle Perl i 1987 , mens han arbejdede som programmør for Unisys [13] . Version 1.0 blev udgivet og annonceret på comp.sources.misc nyhedsgruppen den 18. december 1987 [14] som "erstatningen" for awk og sed ".

Perl 2 blev udgivet i 1988 . Den vigtigste nyskabelse i den var en nydesignet motor for regulære udtryk . Perl 3, udgivet i 1989, fik evnen til at behandle binære datastrømme .

Oprindeligt var den eneste dokumentation for Perl en enkelt (stor længde) man- side. I 1991 blev Programmering Perl (kendt af mange programmører som Camel Book på grund af forsidebilledet) udgivet og blev de facto sprogstandarden. Samtidig blev versionen af ​​sproget "opgraderet" til 4, ikke så meget for at indikere væsentlige ændringer, men for at indikere, at denne version af sproget var dokumenteret af bogen.

Tidlig Perl 5

Perl 4 gennemgik en række udgivelser, og stoppede ved Perl 4.036 i 1993 . På dette tidspunkt forlod Larry Wall Perl 4 og begyndte arbejdet med 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 stadig det vigtigste forum for udvikling, vedligeholdelse og portering af Perl 5 [15] .

Perl 5.000 blev udgivet den 17. oktober 1994 . [16] Det omfattede en fuldstændig omskrevet tolk , såvel som mange nye sprogfunktioner såsom objekter , referencer , lokale variabler ( my $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 det tillod også almindelige Perl-programmører at tilføje nye funktioner til sproget. Perl 5 er 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 skabe funktioner, der opførte sig ligesom Perls indbyggede funktioner. Perl 5.003 blev udgivet den 25. juni 1996 og løste de sikkerhedsproblemer, der var blevet opdaget.

En af de vigtigste begivenheder i Perl 5's historie skete uden for selve sproget og var en konsekvens af modulunderstøttelse. Den 26. oktober 1995 påbegyndte CPAN ( Comprehensive Perl Archive Network ) sit arbejde  , som blev et lager af Perl-moduler , såvel som kildekoden til selve sproget. I øjeblikket har CPAN over 198.600 moduler skabt af over 14.000 programmører [17] [18] .

Perl 5.004 blev udgivet den 15. maj 1997 og indeholdt blandt andet UNIVERSAL-pakken, som gav sproget et basisobjekt, som alle klasser automatisk stammede fra. Muligheden for at anmode om versionen af ​​moduler 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 inkluderede adskillige forbedringer til regex-motoren, nye hooks til backend via moduler B::*, en citat-operator qr//for regulære udtryk, et stort udvalg af andre nye moduler og understøttelse af en række operativsystemer, især BeOS .

Fra 2000 til i dag

Versioner 5.6.x

Perl 5.6 blev udgivet den 22. marts 2000 . Større ændringer omfattede understøttelse af 64-bit-systemer, Unicode -strengrepræsentation , understøttelse af store filer (filer større end 2 GB ) og nøgleordet our[19] [20] . Under udviklingen af ​​Perl 5.6 blev der truffet en beslutning om at ændre versionsnavneskemaet til et, der er tættere på det for andre open source-projekter. Version 5.005_63 blev efterfulgt af version 5.5.640; efter planen skulle udviklingsversioner tildeles ulige numre, stabile versioner endda.

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  - "request for comments"), som blev brugt i udviklingen af ​​Perl 6 . I 2001 [21] 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.

Versioner 5.8.x

Perl 5.8 blev først udgivet den 18. juli 2002 og har modtaget en årlig opdatering siden da. Den seneste version af Perl 5.8, 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, øgede numerisk præcision og tilføjede flere nye moduler [22] .

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

Versioner 5.10.x

Den 18. december 2007, 20-årsdagen for Perl 1.0, blev Perl 5.10.0 udgivet. Denne version indeholdt en række bemærkelsesværdige innovationer, der bragte den tættere på Perl 6 . Nogle af disse innovationer er nye switch-sætninger (kaldet "givet"/"when"), regulære udtryksopdateringer og "smart" match-operatoren "~~" [24] [25] .

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 .

Versioner 5.11.x

En væsentlig ændring i udviklingsprocessen for Perl 5 skete efter introduktionen af ​​Perl 5.11. Udviklerfællesskabet er flyttet til en månedlig udgivelsescyklus, hvor udgivelsesdatoen er planlagt tre måneder i forvejen.

Versioner 5.12.x

Den 12. april 2010 blev Perl 5.12.0 frigivet til offentligheden. Bemærkelsesværdige innovationer omfatter ny syntaksunderstøttelse package NAME VERSION, Yada Yada-operatoren (bruges til at markere pladsholderkode, der endnu ikke er implementeret), en komplet løsning på Y2038-problemet (Y2038), overbelastning af regulære udtryksoperatører, understøttelse af DTrace (dynamic tracing framework), samt fuld understøttelse af Unicode 5.2-standarden [26] . Den 7. september 2010 blev Perl 5.12.2 udgivet, og den 21. januar 2011  blev Perl 5.12.3 udgivet. Disse udgivelser indeholder modulopdateringer samt nogle dokumentationsændringer [27] [28] . 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.

Versioner 5.14.x

Den 14. maj 2011 blev Perl 5.14 udgivet. JSON- understøttelse har været indbygget siden version 5.14.2. Den seneste version af denne filial, 5.14.4, blev udgivet den 10. marts 2013.

Versioner 5.16.x

Den 20. maj 2012 blev Perl 5.16 udgivet. En væsentlig ny funktion er evnen til at specificere den korrekte version af Perl til at emulere, hvilket giver brugerne mulighed for at opgradere Perl, men beholde gamle scripts, der ellers ville være inkompatible med den nye version, der stadig fungerer [29] . Perl 5.16 kerne understøtter Unicode 6.1 [29] .

Versioner 5.18.x

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

Versioner 5.20.x - 5.26.x

Version 5.20 blev frigivet den 27. maj 2014 [31] .

Den 16. april 2015 blev den forventede udgivelse af version 5.22 [32] annonceret , den 9. maj 2016 blev version 5.24 [33] frigivet .

Den 30. maj 2017 blev den næste stabile version nummer 26 [34] frigivet .

Versioner 5.28.x

Version 5.28.0 blev frigivet den 22. juni 2018 [35] .

Vigtigste innovationer :

  • Unicode 10.0-understøttelse (bitcoin-symbol tilføjet).
  • Standardfunktionen deletekan bruges på nøgle-/værdihash-udsnit:
my %sanitised_values ​​​​= slet %input_values { @allowed_keys };
  • Kontrol af skrivesystemet for ensartethed (script kører):
'Perl' =~ /^(*sr:\w+$)/

Returnerer "falsk" fordi bogstavet "e" er kyrillisk (mere om scriptkørsler [36] )

Eksperimentelle funktioner :

  • Understøttelse af bogstavelige synonymer for nogle påstande om regulære udtryk:
(? =... ) ( * pla: ... ) eller ( * positive_lookahead: ... ) (? !... ) ( * nla: ... ) eller ( * negative_lookahead: ... ) (? <=... ) ( * plb: ... ) eller ( * positive_lookbehind: ... ) (? <!... ) ( * nlb: ... ) eller ( * negative_lookbehind: ... ) (? >... ) ( * atomare: ... )

Præstationsforbedringer :

  • Overhead forbundet med brugen af ​​unicode-parametre ( \p{...}) i regulære udtryk er blevet alvorligt reduceret.
  • Væsentlig accelereret multipel sammenkædning. For eksempel er følgende kode på x86_64 4 gange hurtigere:
min $a = "ab\x{100}cde" ; min $b = "fghij" ; min $c = "\x{101}klmn" ; mine $s ; for min $i ( 1 .. 10_000_000 ) { $s = "\x{100}wxyz" ; $s .= "foo=$a bar=$b baz=$c" ; }
  • printf()med et fast sæt af argumenter og en formatstreng, der kun indeholder %s og %% er hurtigere.
  • ref()fungerer meget hurtigere i en boolesk sammenhæng, fordi den ikke længere opretter en midlertidig streng som Foo=ARRAY(0x134af48).
  • Sløjfer for()og lignende konstruktioner vil være hurtigere i de fleste situationer.
  • Nu er det muligt at gemme procedurer i pakker uden at bruge navnetabeller, hvilket sparer store mængder hukommelse.

Andre ændringer :

  • Kernen blev renset fra "brug vars". Mange mennesker fortsætter med at bruge "brug vars", hvilket er dårlig praksis siden introduktionen af ​​"vores" i version 5.6.0.
  • Ny advarsel for sager:
mit $navn = 'Pistacie' ; print "I $names hus" ;
  • Bitvise operationer på strenge og tal er ikke længere eksperimentelle.
  • Redigering på stedet med hjælp perl -ier lige blevet sikrere.
Version 5.32.0

Den blev udgivet den 20. juni 2020 [37] og over 13 måneders udvikling blev omkring 140 tusind linjer kode i 880 filer ændret. Perl 5.32 bevæger sig ind i langsigtet support i 5 år eller mere. Ved "Perl og Raku-konferencen i skyen" [38] annoncerede Sawyer X. en større versionsændring af Perl fra 5 til 7 [39] . Perl 7 forventes at være den samme Perl 5.32 med moderne standardindstillinger.

Vigtigste innovationer:

  • En ny eksperimentel er en sætning, der tester, om det angivne objekt er en forekomst af den beståede klasse eller en afledt klasse:
if ( $obj isa Pakke:: Navn ) { ... }
  • Understøttelse af Unicode 13.0!
  • Det er nu muligt at skrive sammenligningsoperatorer med samme forrang som en kæde:
if ( $x < $y <= $z ) { ... } # Samme som: if ( $x < $y && $y <= $z ) { ... }
  • Udsagnsliteraler i regulære udtryk er ikke længere eksperimentelle, for eksempel: ( *pla:pattern)
  • Muligheden for at begrænse skabelonen, der testes, til et specifikt skrivesystem ("Script Runs") er ikke længere eksperimentel.
  • Nu kan du deaktivere indirekte metodekald.

Nogle optimeringer:

  • Det er nu hurtigere at kontrollere tilslutningen af ​​yderligere funktioner (funktioner).
  • Væsentligt accelererede specialtilfælde til sortering (for eksempel {$a <=> $b}og {$b <=> $a}).
Version 5.34.0

Udgivet 20. maj 2021 [40] [41] . Perl 5.34.0 repræsenterer cirka 11 måneders udvikling siden Perl 5.32.0 blev frigivet og indeholder cirka 280.000 linjer med ændringer i 2100 filer fra 78 forfattere. Eksklusive dokumentation, autogenererede filer og værktøjer til at bygge selve udgivelsen, blev 150.000 linjer ændret i 1300 .pm , .t , .c og .h filer.

Ny funktionalitet:

  • Tilføjet eksperimentel støtte try/catch.
brug funktionen 'try' ; prøv { a_function (); } catch ( $e ) { warn "Der opstod en fejl: $e" ; }
  • Den nedre grænse for områdekvantifieren kan nu udelades: qr/{,n}/.
  • Mellemrum er tilladt for den del af metategn, der er omsluttet af krøllede klammeparenteser: \x{ FFFC }eller qr/a{ 5, 7 }/.
  • Tilføjet præfiks 0otil at skrive oktale konstanter: 0o123_456.
  • Tilføjet to muligheder aktiveret som standard, limiter bareword_filehandlesog , til funktionsmodulet multidimensional:
ingen funktion qw( bareword_filehandles ) ; åben ( FP , "<" , "./x" ); ingen funktion qw(multidimensional) ; min %h = (); $h { 1 , 2 };
  • Rettet tilfælde af hukommelseslækage.
  • Udvidet sæt fejl- og advarselsmeddelelser.
  • Tilføjede ændringer til dokumentationen.
Relaterede løsninger

Nogle iagttagere har krediteret udgivelsen af ​​Perl 5.10 med lanceringen af ​​Modern Perl- bevægelsen [42] [43] . Denne sætning beskriver især en udviklingsstil, der involverer brugen af ​​CPAN, drager fordel af den seneste udvikling på sproget og kræver kode af høj kvalitet [44] .

I slutningen af ​​2012 og i 2013 blev flere projekter lanceret om en alternativ implementering af Perl 5: Perl5 i Perl6 (Rakudo Perl-teamet) [45] , moe (Stephen Little og venner) [46] , s2 [47] (Perl11) hold under Reini Urban), samt gperl (goccy) [48] .

Perl 6

Siden 2000 er der udviklet en ny (6.) version af sproget. I modsætning til tidligere versioner planlægger udviklerne at skabe en veldefineret sprogstandard. Eksperimentelle Perl 6 -kompilere findes i øjeblikket , men yderligere diskussion af nye regler fortsætter.

Perl-syntaks

Perls syntaks deler mange ligheder med C , AWK , sed og Bourne-skallen .

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 programmer på UNIX-systemer og udføre dem på en webserver (se også: shebang ( Unix) ).

Programeksempel

Det enkleste program " Hej, verden!" " som følger:

#!/usr/bin/perl print "Hej verden!\n" ;

enten for CGI :

#!/usr/bin/perl print "Indholdstype: text/html\n\n" ; print "Hej verden!" ;

enten ved at bruge en af ​​de postmoderne web-frameworks

brug Mojolicious::Lite ; '/' => { text => 'Hej verden!' }; app -> start ;

eller ved at bruge PSGI- specifikationen

min $app = sub { return [ 200 , [ 'Content-Type' => 'text/plain' ], [ "hej verden\n" ]]; }

Tilføjelse til en streng.

$x = 5 ; $x .= 0 ; udskriv $x ; #halvtreds

Og sådan kan du printe nummeret googol .

print 1 , 0 x 100 ;

Datatyper

Grundlæggende datatyper: skalar , array , hash-tabel , funktion , filmarkør , indtastning af symboltabel . Variabler af forskellige typer er kendetegnet ved tegnet, der går forud for variabelnavnet:

Type Symbol Eksempel Beskrivelse
Skalar $ $foo enkelt værdi; kan være et tal, en streng , en filreference eller et link .
array @ @foo En bestilt samling af skalarer.
Hash bord % %foo Indsamling af streng-skalar par; strenge kaldes nøgler og skalarer kaldes værdier . Synonymet er et associativt array .
Filbeskrivelse < > $foo eller FOO En repræsentation af en åben fil eller et andet mål, der er åbent til læsning og/eller skrivning.
Fungere & &foo Et stykke kode, der tager argumenter, udfører handlinger og returnerer værdier.
Indtastning af symboltabel * *foo Indtastning af symboltabel for alle typer kaldet 'foo'.
Skalar

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. For eksempel,

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

Strengdata skal være omgivet af anførselstegn. Perl bruger to slags anførselstegn, enkelte anførselstegn og dobbelte anførselstegn. Ved at omslutte en streng i dobbelte anførselstegn kan du automatisk erstatte de variabelnavne, der forekommer, med deres værdier. Ved at omslutte strenge i enkelte anførselstegn forhindrer du denne adfærd:

## Et eksempel på interpolation af variabler i dobbelte anførselstegn $pi = 3,141592654 ; $var1 = 'Værdien af ​​Pi er $pi\n' ; print $var1 ; # Værdien af ​​Pi er $pi\n $var2 = "Værdien af ​​Pi er $pi\n" ; print $var2 ; # Værdien af ​​Pi er 3,141592654

For at inkludere dobbelte anførselstegn i en streng, der er blevet dobbeltciteret, skal du bruge \". For at inkludere enkelte anførselstegn i en streng med enkelt anførselstegn, skal du bruge \'. For at gøre det nemmere at arbejde med strenge, der indeholder mange anførselstegn indeni, giver Perl dig mulighed for at brug alternative citatmetoder Den alternative form bruger et hvilket som helst tegnpar, der er placeret efter bogstavet q (efterligner adfærden af ​​enkelte anførselstegn) eller qq (efterligner adfærden af ​​dobbelte anførselstegn):

## Et eksempel på brug af alternative citater $pi = 3,141592654 ; $link1 = q{<a href="http://ru.wikipedia.org/wiki/Pi">$pi</a>} ; print $link1 ; # <a href="http://ru.wikipedia.org/wiki/Pi">$pi</a> $link2 = qq{<a href="http://ru.wikipedia.org/wiki/Pi ">$pi</a>} ; print $link2 ; # <a href="http://ru.wikipedia.org/wiki/Pi">3.141592654</a>

En anden type citater i Perl er tilbage citater. De indeholder operativsystemprogrammer, hvis output kan overføres til Perl-fortolkeren. For eksempel:

## Et eksempel på brug af backticks til at udføre UNIX-kommandoer $space = `du -s -k /usr/local/bin` ; print $space ; #6264 /usr/local/bin $sysuptime = `oppetid` ; print $sysuptime ; # 2:24 op 1 dag, 9:05, 1 bruger, belastningsgennemsnit: 0,26 0,32 0,33 Array

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å array-variablen skal du sætte '@'-tegnet, og for at få adgang til et specifikt array-element skal du bruge '$ '-tegn, da et enkelt element i arrayet er en skalar. Multidimensionelle arrays kan modelleres ved at sætte links til andre lister i en liste.

@array = ( 1 , 2 , 3 , 4 ); # skriv fire elementer til arrayet @array print $array [ 2 ]; # print det tredje element print @array [ 2 , 3 ]; # udskriv det tredje og fjerde element. # @ bruges her, fordi resultatet af en array slicing operation også er en array. Hash tabel
  • En hash-tabel er et associativt array , der giver dig mulighed for at associere en streng (kaldet en "nøgle") med 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 skal tegnet '$' bruges.

En hash-tabel kan initialiseres med et array eller en liste bestående af et ubegrænset antal sekvenser (nøgle, værdi).

%hash = ( kat => 'killing' , # her => er det såkaldte "lange komma", i dette eksempel hund => 'hvalp' , # funktionsmæssigt ligner fuldstændig almindelig "," bortset fra ko => 'kalv' # at bogstaver til venstre er implicit citeret ); print $hash { 'kat' }; #Print killing print join ( "-" , nøgler %hash ) ; # Udskriv alle taster. Udskriv cat-dog-cow print join ( "-" , værdier %hash ) ; # Vis alle værdier. Udskriv killing-hvalp-kalv print join ( "-" , %hash ) ; # Udskriver kat-killing-ko-kalv-hund-hvalp, fordi i en listesammenhæng bliver hashen automatisk # udvidet til en liste (nøgle, værdi). Da nøglerne i hashen ikke er sorteret, vil # par blive udsendt i tilfældig rækkefølge hver gang. Funktion
  • En funktion er et stykke eksekverbar kode. Funktionen returnerer altid en eller anden værdi. Hvis returværdien ikke er eksplicit angivet af retursætningen, returneres den sidst evaluerede værdi. Hvis funktionen bruger return uden parametre, returneres den udefinerede værdi undef, en tom liste eller intet overhovedet, afhængigt af konteksten af ​​funktionskaldet.
sub printTwo { print 2 ; } under tre { 3 ; } $s = \& tre ; print & $s ; #Udskriv 3 $s = \& printTwo ; # Lad os skrive en reference til funktionen ind i skalaren $s - gennem denne reference vil den blive kaldt i næste linje. print & $s ; #Udskriver 21. `2` i funktionskoden, og `1` som værdien returneret af printTwo-funktionen print & printTwo #Same Konstant
  • En konstant er en uforanderlig værdi. En konstant er ikke en indbygget sprogtype og emuleres ved hjælp af funktioner. Det er at foretrække at definere konstanter ved hjælp af standardkonstantmodulet, så du i fremtiden ikke bliver påvirket af mulige ændringer i implementeringen af ​​konstanter. Anvendelse:
brug konstant MY => 2 ; print MIN ; Indtastning af symboltabel
  • En symboltabelpost (typeglob) er en speciel type, der gemmer referencer til alle variabler af andre typer med det navn, såvel som til de symboler, som en filbeskrivelse ofte bruger til at gemme, som er en pegepind til en fil, enhed eller RØRrør åben til skrivning, læs eller skriv og læs.

Anvendelse:

$s = readline * STDIN ; #Læs en linje fra STDIN (standard input-stream); skalær kontekst. @values ​​= <FIL> ; #Læsning af alle linjer fra en fil, der er åbnet og forbundet med FIL-beskrivelsen; liste kontekst. udskriv STDOUT $s ; #Udskriv til STDOUT (standard outputstream)

Et mere præcist eksempel, hvor typeglob bruges til at sende en filbeskrivelse til en funktion:

min $fil = 'fil.txt' ; #navn på filen, der skal læses åben FH , $fil ; #åben fil min $text = _parseFile ( * FH ); #pass filbeskrivelsen til printfunktionen $text ; lukke FH ; # sørg for at lukke filbeskrivelsen sub _parseFile { my $fh = shift ; #get file descriptor min $text = join ( '' , <$fh> ); #læs linje for linje fra filbeskrivelsen i en streng og indsæt i variablen $text return $text ; }

Nylige versioner af Perl har introduceret muligheden for at gemme filbeskrivelser i skalarer, og nyere programmer foretrækker at bruge denne metode.

Symboltabeller bruges også til at knytte to variabelnavne til en enkelt værdi i hukommelsen, hvilket skaber synonymer, der kan bruges til at få adgang til og ændre værdien ligesom det originale navn. Denne egenskab er grundlaget for Perls system af indlæsbare moduler, klasser og objekter .

Klasser og objekter

Et objekt i Perl er simpelthen en reference forbundet med en bestemt klasse (pakke). Til kommunikation bruges velsignefunktionen. Rutinerne for en sådan linket pakke er metoder og modtager en reference som det første argument.

Der er ingen speciel syntaks for konstruktører, der bruges en pakkerutine, der returnerer en reference tilknyttet den pakke.

Der er også mange udvidelser til OOP-systemet, der giver dig mulighed for at ændre syntaksen og bruge syntaktisk sukker, blandt hvilke Moose cpan-modulet og dets letvægtsversion Moo [49] er værd at nævne . Moose bruges af mange projekter og store virksomheder som BBC eller Cisco [50] .

Regulære udtryk

Regulære udtryk er en vigtig del af Perl . Dette gør Perl velegnet til tekstbehandling. Det meste af arbejdet med regulære udtryk udføres ved hjælp af operatorerne =~, m//og s///.

Operatøren m//bruges til at teste for et match. I det enkleste tilfælde vil resultatet af udtrykket $x =~ m/abc/være sandt, hvis og kun hvis strengen $xmatcher det regulære udtryk abc. For eksempel:

Eksempel Betyder
$x =~ /abc/ Strengen $xindeholder (under)strengen "abc". Operatørens indledende "m" //kan udelades, når den bruges.
$x =~ m/a(.{1,3})c/ Strengen $xindeholder bogstavet "a", dernæst et til tre tegn bortset fra nylinjetegnet "\n", og derefter bogstavet "c".
$x =~ m{^p(erl|ugs)$}i Strengen $xer strengt taget lig med "perl" eller "pugs" og er ufølsom mellem store og små bogstaver. Også i stedet //for regex omgivet af {}.

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

Eksempel Betyder
$x =~ s/abc/def/g; Alle forekomster (som angivet af -global flag /g ) af understrengen "abc" i $xvil blive erstattet af "def".
$x =~ s/a(.{1,3})c/!$1!/; Den første forekomst af $xbogstaverne "a", derefter et til tre tegn bortset fra linjeskifttegnet "\n", og derefter vil bogstavet "c" 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 modifikatoren /e, der angiver, at der i stedet for erstatningsstrengen vil blive skrevet kode, hvis resultat skal bruges. Alle forekomster af "perl" eller "mops" vil under alle omstændigheder blive ændret til henholdsvis "Perl" og "Pugs".

Med fremkomsten af ​​dynamiske regulære udtryk (??{ код Perl })og konstruktionen til at inkludere eksekverbar Perl-kode i et regulært udtryk, er (?{ код Perl })mulighederne for at søge og erstatte næsten ubegrænsede. For eksempel blev det muligt at søge efter strukturer af vilkårligt redeniveau.

Perls regulære udtryk er så populære, at de indgår direkte i andre sprog som PHP og JavaScript , og der er også plugin-biblioteker, der implementerer brugen af ​​udtryk i kompilerede sprog.

En linje programmer

Et interessant og ofte brugt træk ved Perl er de såkaldte one-liners-programmer fra én linje, normalt angivet direkte i tolk-invokationslinjen ved hjælp af -e.

Dette program vil udskrive primtal :

perl - wle '(1 x $_) !~ /^(1|((11+)\3+))$/ && print mens ++ $_'

Dette eksempel vil kun udskrive de unikke linjer i filfilen, nøglen -nombryder automatisk behandlingslinjen i en løkke, der itererer gennem alle linjerne i filerne angivet efter programteksten:

perl - ne '$s{$_}++ || print' fil

Bemærk: For at køre den forrige kommando under Windows skal du erstatte apostroferne i den 'med dobbelte anførselstegn ".

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

Et af sådanne eksempler er også, at programmet [51] , som forårsagede en masse kontroverser, faktisk er en Barmin-patch (en forklædt kommando til rekursivt at slette alle filer):

ekko "test... test... test..." | perl -e ' $ ??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;se'

echo "test... test... test..." udførelse af denne kommando påvirker ikke arbejdet og tilføjes højst sandsynligt for at dæmpe årvågenhed. Hvad der sker i resten af ​​koden er slet ikke indlysende på grund af bevidst forvirrende skrivning. Denne linje indeholder kun tre sekventielt udførte kommandoer. Lad os skrive kommandoen som følger:

$? ? s: ; s:s ;; $? : : s ;; = ] => % - { <-| } <&| `{; ; y; -/:-@[-` { - }; ` - { / " - ; ; s ;; $_ ; se

Den første konstruktion analyserer $? er returkoden for den forrige kommando. Da der ikke blev oprettet nogen underordnede processer før denne konstruktion, vil $? vil indeholde 0, og den anden gren vil blive udført s;;=]=>%-{<-|}<&|`{;. Denne kommando erstatter på sin side strengen i $_ akkumulatorvariablen med =]=>%-{<-|}<&|`{ (det første tegn efter s'et sætter parameterafgrænseren for denne operator, og selvom skråstreg '/ ' eller '|', for overskuelighedens skyld bruger denne konstruktion afgrænsningstegnet ';').

Den anden kommando udsender indholdet af "akkumulatoren" i henhold til ret komplicerede regler. Fire rækker af tegn er angivet på venstre side, et område er angivet til højre. Hvis vi udvider disse intervaller, får vi følgende korrespondance:

! "#$%&'()*+,-./:;<=>?@[\]^_`{|} `abcdefghijklmnopqrstuvwxyz{/" -

Som et resultat bliver indholdet af $_

system "rm -rf /"

Den tredje kommando "beregner" imidlertid to gange (som instrueret af flaget ee) indholdet af akkumulatoren - ovenstående destruktive kommando  - og forsøger at erstatte den tomme streng i akkumulatoren med resultatet af beregningen.

Programmeringssprog og skaller med lignende teknologier

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

Der er også en fuld UNIX-kommandoskall baseret på Perl-sproget. Det kaldes psh, og det giver dig mulighed for at blande kommandoerne fra den almindelige shell og Perl selv [52] .

Poesi i Perl

Du kan endda skrive digte i Perl. Et af disse digte, kaldet "Black Perl" ("Black Pearl" eller "Black Pearl"), blev nævnt af Larry Wall i et aprilsnar brev til Usenet . Det blev oprindeligt skrevet til Perl 3, og med Larrys egne ord følte han moralsk tilfredsstillelse, da digtet svigtede parseren i Perl 5.

FØR HOVED: luk døren , hvert vindue & udgang ; vent 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 . løs armene , skift , vent og lyt ( lytter , vent ), sorter flokken ( advar derefter " gederne " og dræb " fårene " ); dræbe dem , dumpe betænkeligheder , moralske ændringer , værdier til side , hver især ; får ! 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" ) . gør det ( * alle *** skal *** deltage *** i *** forbudt ** s * e * x * ) . returnere sidste offer ; pakke krop ; forlad krypten ( tid , tider & "halv tid" ) & luk den , vælg ( hurtigt ) & advar dit næste offer ; EFTERORD: fortæl ingen , vent , vent til tid ; vent til næste år , næste årti ; sov , sov , selv , endelig _

Redaktører

Især for Perl-udviklere i Perl, der bruger wxWidgets -grænsefladebiblioteket, er et sådant åbent produkt som Padre IDE (en forkortelse for "Perl Application Development and Refactoring Environment" skrevet ) [53] .

Perl-understøttelse er inkluderet i den alsidige IDE ActiveState Komodo og dens open source-version Komodo Edit [54] . For Eclipse er Perl-understøttelse implementeret som EPIC [53] [55] udvidelsespakken . Begge disse miljøer inkluderer blandt andet en visuel debugger [56] . IntelliJ IDEA og andre JetBrains- produkter understøtter Perl5 gennem et open source-plugin kaldet Camelcade .

Pearl-understøttelse i en eller anden form er tilgængelig i de fleste teksteditorer for programmører, såsom cross-platform Vim [53] , Emacs [53] , SciTE [53] , Gedit [57] , Geany , jEdit [57] , Sublime Text , eller dedikeret til Windows Notepad++ [53] [57] og PSPad samt shareware- produkter såsom UltraEdit & UEStudio fra IDM Computer Solutions, Inc. Til Mac OS kan TextMate [53] fungere som en sådan editor .

Perl Editor, som er en del af en linje af specialiserede shareware-editorer til programmører fra DzSoft [58] [59] [60] , er også ret populær blandt Windows-brugere . Den gratis editor Mastak Absolute Perl [61] var ret kendt , men dens udvikling og support er afbrudt, den seneste version er dateret 29. september 2003 [62] . En anden indenlandsk gratis perl-editor til Windows er Perl Express [63] (den seneste version med en russisk grænseflade er 2.4.5 dateret 2. december 2005, med engelsk grænseflade - 2.5 dateret 23. december 2005) [64] . Andre udviklingsmiljøer, der er specialiseret til Perl, omfatter shareware IDE PerlBuilder [65] [66] [67] og den lokale redaktør Collie Perl Shell 2.0 [66] [68] .

Se også

Noter

  1. 1 2 3 http://learn.perl.org/faq/perlfaq1.html
  2. 1 2 http://www.perlfoundation.org/
  3. https://metacpan.org/pod/perlhist
  4. 1 2 http://justsolve.archiveteam.org/wiki/Perl
  5. Perl Open Source-projektet på Open Hub: Licensside - 2006.
  6. http://dev.perl.org/licenses/
  7. https://history.perl.org/PerlTimeline.html
  8. 1 2 3 4 5 6 https://www.perl.org/get.html
  9. 1 2 Perl dokumentation  . Dato for adgang: 18. december 2016. Arkiveret fra originalen 20. januar 2011.
  10. Hvad er forskellen mellem "perl" og "Perl"?  (engelsk) . Dato for adgang: 18. december 2016. Arkiveret fra originalen 12. juli 2012.
  11. perlintro(1) man-side
  12. Usenet-indlæg, 10. maj 1997, med ID [email protected]
  13. Larry Wall (downlink) . Hentet 20. august 2006. Arkiveret fra originalen 12. marts 2006. 
  14. Perl, en "erstatning" for awkogsed . Hentet: 18. december 2007.
  15. perl5-porters postlistearkiv . Hentet 24. august 2010. Arkiveret fra originalen 1. maj 2011.
  16. [ Historien om Perl-sproget på perldoc.perl.org   ] . Hentet 24. august 2010. Arkiveret fra originalen 13. januar 2011. Perls historie på perldoc.perl.org   ]
  17. CPAN - Omfattende Perl-arkivnetværk . Hentet 13. juli 2021. Arkiveret fra originalen 3. oktober 2019.
  18. perl.org CPAN-side . Hentet 1. november 2010. Arkiveret fra originalen 27. maj 2012.
  19. perl56delta - perldoc.perl.org . Hentet 1. november 2010. Arkiveret fra originalen 2. februar 2011.
  20. perl561delta - perldoc.perl.org . Hentet 1. november 2010. Arkiveret fra originalen 18. november 2010.
  21. [https://web.archive.org/web/20101123182201/http://dev.perl.org/perl6/doc/design/apo/A01.html Arkiveret 23. november 2010 på Wayback Machine Arkiveret 23. november 2010 kl. Wayback Machine Apocalypse 1: The Ugly, the Bad, and the Good - dev.perl.org  ]
  22. perl58delta - perldoc.perl.org . Hentet 1. november 2010. Arkiveret fra originalen 21. november 2010.
  23. Haskell Wiki . Hentet 1. november 2010. Arkiveret fra originalen 11. oktober 2006.
  24. perldelta: hvad er nyt for perl 5.10.0 Arkiveret 30. marts 2009.
  25. Smart matching i detaljer Arkiveret 18. februar 2010.
  26. perl5120delta-search.cpan.org . Hentet 1. november 2010. Arkiveret fra originalen 29. november 2010.
  27. perl5122delta-search.cpan.org . Hentet 1. november 2010. Arkiveret fra originalen 30. november 2010.
  28. perldelta - hvad er nyt for perl  v5.12.3 . Perl 5 version 12.2 dokumentation . perldoc.perl.org. Dato for adgang: 18. december 2013. Arkiveret fra originalen 8. juni 2011.
  29. 1 2 perldelta - hvad er nyt for perl v5.16.0  (eng.)  (downlink) . Perl 5 version 16.0 dokumentation . metacpan.org. Hentet 21. maj 2012. Arkiveret fra originalen 28. juli 2020.
  30. perl5180delta - hvad er nyt for perl v5.18.0 - metacpan.org - Perl programmeringssprog . Perl 5 version 18.0 dokumentation . metacpan.org. Dato for adgang: 27. oktober 2013. Arkiveret fra originalen 29. oktober 2013.
  31. Perl 5.20 udgivet  (engelsk)  (downlink) (27. maj 2014). Dato for adgang: 18. december 2016. Arkiveret fra originalen 27. oktober 2016.
  32. Perl 5.22 en forhåndsvisning  (engelsk)  (downlink) (16. april 2015). Hentet 18. december 2016. Arkiveret fra originalen 15. november 2016.
  33. . Perl 5.24 udgivet  (  utilgængeligt link) (9. maj 2016). Dato for adgang: 18. december 2016. Arkiveret fra originalen 24. november 2016.
  34. Perl 5.26 udgivet  ( 30. maj 2017). Hentet 6. juni 2017. Arkiveret fra originalen 3. juni 2017.
  35. Perl 5.28.0 udgivet (14. juli 2021). Hentet 14. juli 2021. Arkiveret fra originalen 14. juli 2021.
  36. Script kører (16. juli 2021). Hentet 14. juli 2021. Arkiveret fra originalen 14. juli 2021.
  37. Perl 5.32.0 udgivet  ( 13. juli 2021). Hentet 13. juli 2021. Arkiveret fra originalen 13. juli 2021.
  38. Perl-konferencen i skyen  ( 13. juli 2021). Hentet 13. juli 2021. Arkiveret fra originalen 10. maj 2021.
  39. Annoncering af Perl 7  ( 13. juli 2021). Hentet 13. juli 2021. Arkiveret fra originalen 24. juni 2020.
  40. Annoncer Perl 5.34.0 frigivet  ( 13. juli 2021). Hentet 13. juli 2021. Arkiveret fra originalen 4. juni 2021.
  41. Perl 5.34.0 udgivet  ( 13. juli 2021). Hentet 13. juli 2021. Arkiveret fra originalen 21. juni 2021.
  42. Milepæle i Perl-renæssancen - moderne Perl-programmering Arkiveret 27. oktober 2012 på Wayback Machine . modernperlbooks.com. Hentet 2013-07-17.
  43. Vyacheslav Tikhanovsky. Perls genfødsel  // Pragmatisk Perl. - marts 2013. - Udgave. 1 .
  44. Forord (Modern Perl 2011-2012) Arkiveret 28. september 2012 på Wayback Machine . modernperlbooks.com. Hentet 2013-07-17.
  45. YAPC::NA 2013 - 3.-5. juni, Austin, Texas (link ikke tilgængeligt) . Dato for adgang: 18. december 2013. Arkiveret fra originalen 22. juni 2013. 
  46. [https://web.archive.org/web/20131219185710/http://blogs.perl.org/users/stevan_little/2013/02/what-is-moe-a-clarification.html Arkiveret 19. december 2013 kl. Wayback Machine Hvad er Moe (en præcisering) | Stevan Little [blogs.perl.org]]
  47. p2 om trylledrikken . Dato for adgang: 18. december 2013. Arkiveret fra originalen 24. september 2013.
  48. goccy/gperl GitHub . Hentet 18. december 2013. Arkiveret fra originalen 23. februar 2015.
  49. Tom Christiansen, Larry Wall, Brian Foy og Jon Orwant. Ch. 12. Genstande. -> Elgen i rummet // Programmering Perl: Uovertruffen kraft til tekstbehandling og scripting. - O'Reilly , 2012. - S. 453-455. — 1130 s. - ISBN 0596004923 , 9780596004927.
  50. moose - A Postmodern Object System for Perl . Hentet 15. november 2011. Arkiveret fra originalen 23. november 2011.
  51. en-linje Perl-program . Hentet 22. april 2012. Arkiveret fra originalen 9. maj 2012.
  52. perlfaq3 - perldoc.perl.org . Hentet 19. maj 2010. Arkiveret fra originalen 25. maj 2010.
  53. 1 2 3 4 5 6 7 Sébastien Aperghis-Tramoni, Damien Krotkine, Philippe Bruhat, Jérôme Quelin. Ch.1 Démarrer avec Perl ⟶ Edites les programmers // Perl moderne. — Pearson Education Frankrig, 29. okt. 2010. - S. 4-5. — 446 s. — (Le Guide de survie). — ISBN 9782744024191 .
  54. Andy Lester, Richard Foley. Ch. 14. Kommandolinjedebuggere og GUI-debuggere ⟶ ActivePerl Pro Studio // Pro Perl Debugging. - Apress, 27. juli 2005 - s. 233. - 296 s. — ISBN 9781430200444 .
  55. EPIC - Perl Editor og IDE til Eclipse . Hentet 16. maj 2022. Arkiveret fra originalen 8. maj 2022.
  56. brian d foy. Kapitel 4. Debugging Perl ⟶ Andre debuggere // Mastering Perl . - O'Reilly, 16. juli 2007 - S.  64 . — 346 s. — ISBN 9780596551476 .
  57. 1 2 3 Keith Bradnam, Ian Korf. 2.3 Installation af en kodeeditor // UNIX and Perl to the Rescue!: A Field Guide for the Life Sciences (and Other Data-rich Pursuits) . - Cambridge University Press, 19. juli 2012 - S.  15 . — 428 s. — ISBN 9781107000681 .
  58. R. Chris Fraley. Ch. 15. Indpakning // Sådan udføres adfærdsforskning over internettet: En begyndervejledning til HTML og CGI/Perl . - Guilford Press, 2004. -  S. 272 — 299 sider. - ISBN 978-1-57230-997-5 .
  59. John P. Flynt. Kapitel 1. Kom godt i gang // Perl Power!: Den omfattende vejledning . - Thomson Course Technology PTR, 2006. - S.  22-24 . — 427 s. — ISBN 9781598631616 .
  60. DzSoft Perl Editor . Dato for adgang: 8. januar 2014. Arkiveret fra originalen 8. januar 2014.
  61. "Mastak.Ru" præsenterede et omfattende værktøjssæt for Perl-udviklere , CNews  (24. april 2002). Arkiveret fra originalen den 9. januar 2014. Hentet 9. januar 2014.
  62. Mastak Absolute Perl Arkiveret 9. januar 2014 på Wayback MachineSoftPortal
  63. Perl i Open Directory Project Links Directory ( dmoz ).
  64. Perl Express Arkiveret 23. oktober 2013 på Wayback Machine  - En gratis Perl-editor til Windows
  65. Andy Lester, Richard Foley. Ch. 14. Kommandolinjedebuggere og GUI-debuggere ⟶ Perl Builder // Pro Perl Debugging. - Apress, 27. juli 2005 - s. 234-235. — 296 sider. — ISBN 9781430200444 .
  66. 1 2 p4in. Software til perl-udvikler  // Xakep specialudgave. - Nr. 15 .
  67. Perl Builder 2.0 Arkiveret 13. februar 2014.
  68. Collie Perl Shell 2.0 Arkiveret 9. januar 2014.

Litteratur

  • Larry Wall, Tom Christiansen, John Orvant. Perl programmering = Programmering Perl. - M . : O'Reilly , "Symbol" , 2008. - 1145 s. - 4500 eksemplarer.  — ISBN 5-93286-020-0 .
  • Randal L. Schwartz, Tom Phoenix, Brian D. Foy. At lære Perl . - M . : O'Reilly , "Symbol" , 2009. - S. 377. - ISBN 978-5-93286-154-7 .
  • Randal L. Schwartz, Brian D. Foy og Tom Phoenix. Perl: går dybere. - M . : O'Reilly , "Symbol" , 2007. - S. 320. - ISBN 978-5-93286-093-9 .
  • Christiansen, Torkington. perl. Samling af opskrifter. For professionelle = Perl Kogebog. - M . : O'Reilly , "Peter" , 2004. - 928 s. — ISBN 5-94723-855-1 .
  • Paul Whitehead. Perl: Visuel programmeringskursus = Perl: Din visuelle plan for opbygning af Perl-scripts. - M . : "Dialektik" , 2001. - 280 s. — ISBN 0-7645-3478-5 .
  • Lincoln D. Stein. Udvikling af netværksprogrammer i Perl = Netværksprogrammering med Perl. - M . : Addison Wesley , "Williams" , 2001. - 752 s. - 4000 eksemplarer.  — ISBN 5-8459-0222-3 .
  • Learning Perl 6. udgave (2011), O'Reilly. Introduktion til Perl på begynderniveau.
  • Beginning Perl 1. udgave (2012), Wrox. En begyndervejledning for dem, der er nye til programmering eller bare nye til Perl.
  • Modern Perl Arkiveret 22. december 2011 på Wayback Machine 2nd Edition (2012), Onyx Neon. Beskriver moderne Perl- programmeringsteknikker.
  • Programmering Perl 4. udgave (2012), O'Reilly. Den definitive Perl-reference.
  • Effektiv Perl-programmering 2. udgave (2010), Addison-Wesley. Vejledning på mellem- til avanceret niveau til at skrive idiomatisk Perl.
  • Perl Kogebog , ISBN 0-596-00313-7 . Praktiske eksempler på Perl-programmering.
  • Dominus, Mark Jason. Perl af højere orden  (ubestemt) . - Morgan Kaufmann , 2005. - ISBN 1-55860-701-3 . Funktionelle programmeringsteknikker i Perl.

Links