Perl - Perl

Perl
Programozás-köztársaság-of-perl.png
Paradigma Multi-paradigma : funkcionális , imperatív , objektum-orientált ( osztályalapú ), reflektív
Tervezte Larry Wall
Fejlesztő Larry Wall
Először jelent meg 1988. február 1 . ; 33 évvel ezelőtt ( 1988-02-01 )
Stabil kiadás
Előzetes verzió
5.35.4 / 2021. szeptember 20 .; 22 nappal ezelőtt ( 2021-09-20 )
Gépelési fegyelem Dinamikus
Végrehajtási nyelv C
OS Többplatformos
Engedély Artistic License 1.0 vagy GNU General Public License
Fájlnévkiterjesztések .plx, .pl, .pm, .xs, .t, .pod, .cgi
Weboldal www .perl .org
Befolyásolta
AWK , BASIC , C , C ++ , Lisp , sed , Unix shell
Befolyásolt
CoffeeScript , Groovy , JavaScript , Julia , LPC , PHP , Python , Raku , Ruby , PowerShell

A Perl két magas szintű , általános célú , értelmezett , dinamikus programozási nyelv családja . A "Perl" a Perl 5 -re utal, de 2000 -től 2019 -ig az újratervezett "testvérnyelvére", a Perl 6 -ra is utalt, mielőtt az utóbbi nevét 2019 októberében hivatalosan Raku -ra változtatták .

Noha a Perl hivatalosan nem mozaikszó, különféle utóneveket használnak, beleértve a "Praktikus kitermelés és jelentés nyelvét". A Perl-t Larry Wall 1987- ben fejlesztette ki általános célú Unix szkriptnyelvként , hogy megkönnyítse a jelentések feldolgozását. Azóta sok változáson és átdolgozáson ment keresztül. A Raku, amely 2000 -ben a Perl 5 újratervezésével kezdődött, végül külön nyelvvé fejlődött. Mindkét nyelvet továbbra is egymástól függetlenül fejlesztik a különböző fejlesztőcsoportok, és szabadon kölcsönöznek ötleteket egymástól.

A Perl nyelvek más programozási nyelvektől kölcsönöznek funkciókat, beleértve a C , shell script ( sh ), AWK és sed ; Számos modern Unix parancssori eszköz önkényes adathossz-korlátozása nélkül nyújtanak szövegfeldolgozási lehetőségeket . A Perl 5 az 1990 -es évek végén széles körű népszerűségre tett szert CGI szkriptnyelvként , részben felülmúlhatatlan reguláris kifejezési és karakterlánc -elemzési képességei miatt.

A CGI mellett a Perl 5 rendszert rendszergazdálkodásra , hálózati programozásra , pénzügyekre, bioinformatikára és más alkalmazásokra, például grafikus felhasználói felületre használja . Rugalmassága és ereje, valamint csúnyasága miatt a "Svájci Hadsereg scriptnyelv -láncfűrészének" becézték. 1998 -ban " az internetet összetartó ragasztószalagként " is emlegették, utalva mind a ragasztónyelvként való mindenütt történő használatára, mind az érzékelt ineleganciára.

A Perl egy rendkívül kifejező programozási nyelv: egy adott algoritmus forráskódja rövid és erősen tömöríthető.

Név

Perl eredetileg "Pearl" volt. Wall rövid nevet akart adni a nyelvnek, pozitív konnotációkkal. Wall a Perl hivatalos megjelenése előtt fedezte fel a meglévő PEARL programozási nyelvet, és megváltoztatta a név helyesírását.

A nyelvre való hivatkozáskor a név nagybetűvel íródik: Perl . Magára a programra hivatkozva a név nagybetűs ( perl ), mivel a legtöbb Unix-szerű fájlrendszer kis- és nagybetűket érzékeny. A Programming Perl első kiadásának megjelenése előtt gyakori volt, hogy a nyelvre perl -ként hivatkoztak . Randal L. Schwartz azonban nagybetűvel használta a nyelv nevét a könyvben, hogy jobban kiemelkedjen gépeléskor. Ezt az esetkülönbséget később kanonikusként dokumentálták.

A nevet időnként bővült a backronyms : Gyakorlati Extraction and Report Language és a Wall saját Patoiógiailag eklektikus Vacak Lister , amely a kézikönyv lap a perl.

Történelem

Korai változatok

Larry Wall 1987 -ben kezdett el dolgozni a Perl -en , miközben programozóként dolgozott az Unisys -nél , és az 1.0 -ás verziót 1988. február 1 -jén adták ki a comp.sources.unix hírcsoportnak . A nyelv gyorsan elterjedt az elkövetkező években.

Az 1988 -ban megjelent Perl 2 jobb reguláris kifejezésű motort tartalmazott. Az 1989 -ben megjelent Perl 3 támogatja a bináris adatfolyamokat.

Eredetileg csak dokumentációt Perl volt egy hosszadalmas man oldalt . 1991 -ben megjelent a Programming Perl , amelyet borítója miatt sok Perl -programozó "Camel Book" -ként ismert, és ez lett a nyelv de facto referenciája. Ugyanakkor a Perl verziószámát 4 -re verték, nem a nyelv jelentős változásának jelzésére, hanem a könyv által jól dokumentált verzió azonosítására.

Korai Perl 5

A Perl 4 karbantartási kiadásokon ment keresztül , amelyek 1993-ban a Perl 4.036-ban tetőztek, majd Wall elhagyta a Perl 4-et, hogy megkezdje a Perl 5- tel kapcsolatos munkálatokat. A Perl 5 kezdeti tervezése 1994-ig folytatódott. A perl5-porters levelezőlistát 1994 májusában hozták létre koordinálja a Perl 5 különböző platformokra történő átvitelével kapcsolatos munkát. Továbbra is a Perl 5 fejlesztésének, karbantartásának és átvitelének elsődleges fóruma.

A Perl 5.000 1994. október 17 -én jelent meg. A tolmács majdnem teljes átírása volt , és sok új funkciót adott hozzá a nyelvhez, beleértve az objektumokat , referenciákat , lexikai (saját) változókat és modulokat . Fontos, hogy a modulok mechanizmust biztosítottak a nyelv kiterjesztéséhez a tolmács módosítása nélkül. Ez lehetővé tette a központi tolmács stabilizálódását, még akkor is, ha a hagyományos Perl programozók új nyelvi funkciókat adhattak hozzá. A Perl 5 azóta is aktív fejlesztés alatt áll.

A Perl 5.001 1995. március 13 -án jelent meg. A Perl 5.002 1996. február 29 -én jelent meg az új prototípus -szolgáltatással. Ez lehetővé tette a modulok szerzőinek, hogy olyan alprogramokat készítsenek, amelyek Perl beépítettként viselkednek . A Perl 5.003 1996. június 25 -én jelent meg biztonsági kiadásként.

A Perl 5 történetének egyik legfontosabb eseménye a megfelelő nyelven kívül történt, és a modul támogatásának volt a következménye. 1995. október 26 -án létrehozták az átfogó Perl Archív Hálózatot (CPAN) a Perl nyelvi és Perl modulok tárházaként ; 2017 májusáig több mint 185 178 modult hordoz 35 190 terjesztésben, több mint 13 071 szerző írásával, és világszerte több mint 245 helyszínen tükröződik.

A Perl 5.004 1997. május 15 -én jelent meg, és többek között az UNIVERSAL csomagot is tartalmazta, így a Perl egy alapobjektumot kapott, amelyből az összes osztály automatikusan származik, és lehetővé teszi a modulok verzióinak megkövetelését. Egy másik jelentős fejlemény a CGI.pm modul beépítése volt , amely hozzájárult Perl CGI szkriptnyelvként való népszerűségéhez .

A Perl 5.004 támogatást nyújtott a Microsoft Windows , a Plan 9 , a QNX és az AmigaOS számára .

A Perl 5.005 1998. július 22 -én jelent meg. Ez a kiadás számos fejlesztést tartalmazott a regex motorban, új kampókat a hátsó rendszerbe a B::*modulokon keresztül , a qr//regex árajánlat -kezelőt, számos új új alapmodult, és további támogatást nyújtott további működéshez rendszerek, beleértve a BeOS -t is .

2000–2020

Fő verzió Legújabb frissítés
Régi, már nem karbantartott verzió: 5.4 1999-04-29
Régi, már nem karbantartott verzió: 5.5 1999-03-29
Régi, már nem karbantartott verzió: 5.6 2003-11-15
Régi, már nem karbantartott verzió: 5.8 2008-12-14
Régi, már nem karbantartott verzió: 5.10 2009-08-23
Régi, már nem karbantartott verzió: 5.12 2012-11-10
Régi, már nem karbantartott verzió: 5.14 2013-03-10
Régi, már nem karbantartott verzió: 5.16 2013-03-11
Régi, már nem karbantartott verzió: 5.18 2014-10-02
Régi, már nem karbantartott verzió: 5.20 2015-09-12
Régi, már nem karbantartott verzió: 5.22 2017-07-15
Régi, már nem karbantartott verzió: 5.24 2018-04-14
Régi, már nem karbantartott verzió: 5.26 2018-11-29
Régi, már nem karbantartott verzió: 5.28 2020-06-01
Régi, már nem karbantartott verzió: 5.30 2020-06-01
Régebbi verzió, még mindig karbantartva: 5.32 2021-01-23
Jelenlegi stabil verzió: 5.34 2021-05-20
Egy jövőbeli kiadás legújabb előzetes verziója: 5.35 2021-05-21
Jövőbeni megjelenés: 5.36 2022-05-20
Jövőbeni megjelenés: 7.0 2022?
Legenda:
Régi verzió
Régebbi verzió, még mindig karbantartva
Jelenlegi stabil verzió
Legutóbbi előzetes verzió
Jövőbeni kiadás

A Perl 5.6 2000. március 22-én jelent meg. A főbb változások közé tartozott a 64 bites támogatás, az Unicode karakterlánc-megjelenítés, a 2 GiB feletti fájlok támogatása és a „mi” kulcsszó. A Perl 5.6 fejlesztésekor úgy döntöttek, hogy a verziószámítási sémát más, nyílt forráskódú projektekhez hasonlóra váltják ; az 5.005_63 után a következő verzió az 5.5.640 lett, a tervek szerint a fejlesztői verziók páratlan számokkal, a stabil változatok pedig páros számokkal rendelkeznek.

2000 -ben Wall felhívást tett közzé a közösségtől a Perl új verziójára. A folyamat eredményeként 361 RFC (megjegyzéskérés) dokumentum született, amelyeket a Perl 6 fejlesztésének irányításához kell használni. 2001 -ben megkezdődött a Perl 6 „Apokalipszis” című dokumentuma, amely a változtatási kérelmek összefoglalására és bemutatására szolgál. a Perl következő generációjának tervezése. Ezeket az RFC -k összefoglalójaként mutatták be, nem pedig hivatalos dokumentumként. Ezen a ponton a Perl 6 csak egy nyelv leírásaként létezett.

A Perl 5.8 először 2002. július 18 -án jelent meg, azóta szinte évente frissítették. A Perl 5.8 továbbfejlesztette az Unicode támogatást, új I/O implementációt, új szál megvalósítást, javította a numerikus pontosságot és több új modult. 2013-tól ez a változat továbbra is a Perl legnépszerűbb verziója, és a Red Hat 5, Suse 10, Solaris 10, HP-UX 11.31 és AIX 5 használja.

2004 -ben megkezdődött a "Szinopszisok" kidolgozása, amelyek eredetileg az Apokalipszist foglalják össze, de a Perl 6 nyelv specifikációjává váltak. 2005 februárjában Audrey Tang elkezdett dolgozni a Pugs -en , a Haskell -ben írt Perl 6 tolmácson . Ez volt az első közös erőfeszítés a Perl 6 megvalósítása érdekében. Ez az erőfeszítés 2006 -ban elakadt.

A PONIE a Perl On New Internal Engine rövidítése. A PONIE projekt 2003 -tól 2006 -ig létezett, és híd volt a Perl 5 és a Perl 6 között. Arra törekedtünk, hogy átírjuk a Perl 5 tolmácsot, hogy Parrot , a Perl 6 virtuális gépen fusson . A cél az volt, hogy biztosítsuk a Perl 5 kód több millió sorának jövőjét világszerte több ezer vállalatnál. A PONIE projekt 2006 -ban véget ért, és már nem fejlesztik aktívan. A PONIE részeként a Perl 5 tolmácson végrehajtott néhány fejlesztés bele volt hajtva ebbe a projektbe.

2007. december 18 -án megjelent a Perl 1.0, a Perl 5.10.0 20. évfordulója. A Perl 5.10.0 figyelemre méltó új funkciókat tartalmazott, amelyek közelebb vitték a Perl 6 -hoz. Ezek között szerepelt egy switch utasítás (az úgynevezett "adott"/"mikor"), a reguláris kifejezések frissítései és az " intelligens egyezés -operátor " (~~). Körülbelül ugyanebben az időben kezdődött komoly fejlesztés a Perl 6 egy másik, Rakudo Perl néven ismert megvalósításán , amelyet a Parrot virtuális géppel párhuzamosan fejlesztettek ki . 2009 novemberétől a Rakudo Perl rendszeres havi kiadásokat kapott, és most a Perl 6 legteljesebb megvalósítása.

A Perl 5 fejlesztési folyamatában jelentős változás történt a Perl 5.11; a fejlesztői közösség a fejlesztési kiadások havi kiadási ciklusára váltott, a stabil kiadások éves ütemezésével. E terv szerint a hibajavítási pontok kiadásai három havonta követik a stabil kiadásokat.

2010. április 12 -én megjelent a Perl 5.12.0. A figyelemre méltó fejlesztések közé tartozik az új package NAME VERSIONszintaxis, a Yada Yada operátor (a még nem implementált helyőrző kód megjelölésére szolgál), az implicit megszorítások , a teljes Y2038 megfelelés, a regex átalakítás túlterhelése, a DTrace támogatás és az Unicode 5.2. 2011. január 21 -én megjelent a Perl 5.12.3; frissített modulokat és néhány dokumentációs módosítást tartalmaz. Az 5.12.4 verzió 2011. június 20 -án jelent meg. Az ág legújabb verziója, az 5.12.5 2012. november 10 -én jelent meg.

2011. május 14-én megjelent a Perl 5.14 beépített JSON támogatással.

2012. május 20 -án megjelent a Perl 5.16. A figyelemre méltó új funkciók közé tartozik a Perl adott verziójának megadása, amelyet emulálni kívánnak, lehetővé téve a felhasználóknak, hogy frissítsék Perl verziójukat, de továbbra is futtassanak régi szkripteket, amelyek általában nem kompatibilisek. A Perl 5.16 frissíti a magot az Unicode 6.1 támogatása érdekében .

2013. május 18 -án megjelent a Perl 5.18. A figyelemre méltó újdonságok közé tartoznak az új dtrace horgok, lexikális alprogramok, több CORE :: felirat, a kivonat biztonsági okokból történő nagyjavítása, az Unicode 6.2 támogatása.

2014. május 27 -én megjelent a Perl 5.20. A figyelemre méltó újdonságok közé tartoznak az alprogram aláírások, a hash szeletek/új szelet szintaxis, a postfix dereferencia (kísérleti), a Unicode 6.3, rand () konzisztens véletlenszám -generátor használatával.

Egyes megfigyelők a Perl 5.10 kiadását a Modern Perl mozgalom kezdetének tulajdonítják. Ez a kifejezés különösen egy olyan fejlesztési stílust ír le, amely magában foglalja a CPAN használatát, kihasználja a nyelv legújabb fejleményeit, és szigorúan törekszik a kiváló minőségű kód létrehozására. Míg a "Modern Perl" könyv lehet ennek a gondolatnak a leglátványosabb hordozója, más csoportok, mint például a felvilágosult Perl Szervezet, felvették az ügyet.

2012 és 2013 végén számos projekt indult a Perl 5 alternatív megvalósítására: Perl5 a Perl6 -ban a Rakudo Perl csapata, moe Stevan Little és barátai, p2 a Perl11 csapata Reini Urban vezetésével , gperl by goccy és rperl, egy Kickstarter projekt Will Braswell vezetésével és a Perll11 projekthez kapcsolódik.

2020 -tól

2020 júniusában a Perl 7 -et bejelentették a Perl 5 utódjaként. A Perl 7 -nek eredetileg a Perl 5.32 -en kell alapulnia, a megjelenés 2021 első felében várható, és a kiadási jelöltek hamarabb. Ezt a tervet 2021 májusában felülvizsgálták, anélkül, hogy a Perl 5 kiadási időkerete vagy verziója lett volna az alapvonalként megadott. A Perl 7 megjelenésekor a Perl 5 hosszú távú karbantartásba kerül. A támogatott Perl 5 verziók azonban továbbra is fontos biztonsági és hibajavításokat kapnak.

Szimbólumok

Teve

Az O'Reilly Media által használt teve szimbólum

Az O'Reilly Media által közzétett Programming Perl címlapján egy dromedári teve képe látható, és általában "Camel Book" -nak hívják. Ez a kép a Perl nem hivatalos szimbólumává vált, valamint általános hacker- emblémává, amely megjelenik a pólókon és más ruházati cikkeken.

O'Reilly védjegyként birtokolja a képet, de nem kereskedelmi célú használatra engedélyezi, és csak elismerést és linket igényel a www.perl.com webhelyre. A kereskedelmi felhasználás engedélyezéséről eseti alapon döntenek. Az O'Reilly a "Programming Republic of Perl" logókat is biztosítja a nem kereskedelmi webhelyekhez, és a "Powered by Perl" gombokat minden olyan webhelyhez, amely Perl-t használ.

Hagyma

A The Perl Foundation által használt hagymás logó

A Perl Alapítvány egy alternatív szimbólummal, egy hagymával rendelkezik, amelyet leányvállalatai, a Perl Mongers , a PerlMonks , a Perl.org és mások számára engedélyez. A szimbólum egy vizuális szójáték a gyöngyhagymán .

Raptor

Alternatív Perl 5 logó

Sebastian Riedel, a Mojolicious megalkotója létrehozott egy raptor dinoszauruszt ábrázoló logót , amely elérhető a CC-SA licenc 4.0 verziójában. A raptor analógja Matt S Trout 2010 -től kezdődő tárgyalássorozatából származik.

Áttekintés

Wall szerint Perlnek két szlogenje van. Az első a " Többféleképpen is megtehető ", közismert nevén TMTOWTDI. A második szlogen: "Az egyszerű dolgoknak könnyűnek kell lenniük, és a keményeknek lehetségesnek kell lenniük".

Jellemzők

A Perl általános szerkezete nagyjából C. -ből származik. Perl eljárásjellegű , változókkal , kifejezésekkel , hozzárendelési utasításokkal , zárójeles határolással ellátott blokkokkal , vezérlőszerkezetekkel és alprogramokkal .

A Perl a shell programozás funkcióit is átveszi. Minden változót vezető jelzésekkel jelölnek , amelyek lehetővé teszik a változók közvetlen karakterláncokba való interpolálását . Azonban a héjjal ellentétben a Perl a sigil -eket használja a változók minden eléréséhez, és a legtöbb más, sigils -t használó programozási nyelvvel ellentétben a sigil nem a változó típusát, hanem a kifejezés típusát jelöli. Például, míg például egy tömböt "@" jelzéssel jelölünk (például ), addig a tömb egyes tagjait a "$" skaláris szigil jelöli (például ). A Perl számos beépített funkcióval is rendelkezik, amelyek a shell programozásban gyakran használt eszközöket biztosítanak (bár sok ilyen eszközt a shell-en kívüli programok valósítanak meg), például a rendezést és az operációs rendszer- létesítmények hívását . @arrayname$arrayname[3]

A Perl kivonatokat ("asszociatív tömböket") vesz az AWK -ból és a reguláris kifejezéseket a sed -ből . Ezek egyszerűsítik számos elemzési, szövegkezelési és adatkezelési feladatot. A Lisp -el megosztva a blokk utolsó értékének implicit visszaadása , és minden állítás olyan kifejezés is, amelyet maguk is nagyobb kifejezésekben használhatnak.

A Perl 5 olyan funkciókat adott hozzá, amelyek támogatják az összetett adatstruktúrákat , az első osztályú funkciókat (azaz a lezárásokat, mint értékeket) és egy objektumorientált programozási modellt. Ide tartoznak a hivatkozások , a csomagok, az osztályalapú módszer elküldése és a lexikailag hatókörű változók , valamint a fordítói irányelvek (például a strict pragma ). A Perl 5 által bevezetett további fontos szolgáltatás a kód újrafelhasználható modulként történő csomagolása. Wall később kijelentette: "A Perl 5 modulrendszerének teljes célja az volt, hogy ösztönözze a Perl -kultúra növekedését, nem pedig a Perl -magot."

A Perl minden verziója automatikus adattípusokat és automatikus memóriakezelést végez . A tolmács ismeri a program minden adatobjektumának típusát és tárolási követelményeit; szükség szerint kiosztja és felszabadítja a tárhelyet számukra referenciaszámlálás segítségével (tehát nem képes körkörös adatstruktúrák kiosztását kézi beavatkozás nélkül). A jogi típusú konverziók - például számokból karakterláncokká történő konverziók - futás közben automatikusan történnek ; az illegális típusú konverziók végzetes hibák.

Tervezés

A Perl tervezése a számítógép -ipar három nagy trendjére adott válaszként értelmezhető: csökkenő hardverköltségek, növekvő munkaerőköltségek és a fordítótechnológia fejlesztése. Számos korábbi számítógépes nyelv, például a Fortran és a C célja a drága számítógépes hardverek hatékony kihasználása volt. Ezzel szemben a Perl -t úgy tervezték, hogy a számítógépes programozók gyorsabban és könnyebben írhassanak programokat.

A Perl számos olyan funkcióval rendelkezik, amelyek megkönnyítik a programozó feladatát a nagyobb CPU- és memóriaigények rovására . Ide tartozik az automatikus memóriakezelés; dinamikus gépelés ; karakterláncok, listák és kivonatok; rendszeres kifejezések; önvizsgálat ; és egy eval()funkció. Perl a "nincs beépített határ" elméletét követi, amely a Zero One Infinity szabályhoz hasonló elképzelés .

Wallot nyelvésznek képezték ki, és Perl tervezéséhez nagyon jól illeszkednek a nyelvi elvek. Ilyen például a Huffman-kódolás (a gyakori konstrukcióknak rövideknek kell lenniük), a jó végsúlyozás (a fontos információknak kell az első helyre kerülniük) és a nyelvi primitívek nagy gyűjteménye . Perl a nyelvi konstrukciókat részesíti előnyben, amelyek tömörek és természetesek az emberek számára, még akkor is, ha bonyolítják a Perl -tolmácsot.

Perl szintaxisa azt az elképzelést tükrözi, hogy "a különböző dolgoknak máshogy kell kinézniük". Például a skalárok, tömbök és kivonatok különböző előjelekkel rendelkeznek. A tömbindexek és a hash kulcsok különböző típusú zárójeleket használnak. A karakterláncok és a reguláris kifejezések eltérő szabványos határolókkal rendelkeznek. Ez a megközelítés szembeállítható egy olyan nyelvvel, mint a Lisp , ahol ugyanazt az alapvető szintaxist használják, amely egyszerű és univerzális szimbolikus kifejezésekből áll.

A Perl nem érvényesít semmilyen programozási paradigmát ( eljárási , objektum-orientált , funkcionális vagy más), és nem is megköveteli a programozótól, hogy válasszon közülük.

Széleskörű gyakorlati hajlam fűződik mind a Perl nyelvhez, mind az azt körülvevő közösséghez és kultúrához. A Perl programozásának előszava így kezdődik: "A Perl egy nyelv a munkád elvégzéséhez." Ennek egyik következménye, hogy a Perl nem rendezett nyelv. Sok funkciót tartalmaz, elvisel szabályai alóli kivételeket, és heurisztikákat alkalmaz a szintaktikai kétértelműségek feloldására. A fordító megbocsátó jellege miatt a hibákat néha nehéz megtalálni. Perl függvénydokumentációja megjegyzi a beépített függvények változó viselkedését a lista- és skaláris kontextusokban, és ezt mondja: "Általában azt teszik, amit akarnak, hacsak nem akarja a következetességet."

Nincsenek írásos specifikációk vagy szabványok a Perl nyelvre vonatkozóan a Perl Perl 5 -ös verzióin keresztül, és nem terveznek egyet sem a Perl jelenlegi verziójához. A tolmácsnak csak egy megvalósítása volt, és a nyelv együtt fejlődött vele. Ez a tolmács a funkcionális tesztjeivel együtt a nyelv de facto specifikációja. A Perl 6 azonban specifikációval indult, és számos projekt célja a specifikáció egy részének vagy egészének megvalósítása.

Alkalmazások

A Perl számos és változatos alkalmazással rendelkezik, amelyet számos szabványos és harmadik féltől származó modul elérhető.

A Perl -t elsősorban CGI -szkriptek írására használták : a Perl -ben írt nagy projektek közé tartozik a cPanel , a Slash , a Bugzilla , az RT , a TWiki és a Movable Type ; a Perl-t széles körben használó, nagy forgalmú webhelyek közé tartozik a Priceline.com , a Craigslist , az IMDb , a LiveJournal , a DuckDuckGo , a Slashdot és a Ticketmaster . Ez a PHP vagy a Python helyett a népszerű LAMP -technológia verem opcionális összetevője a webfejlesztéshez . A Perl -t széles körben használják rendszerprogramozási nyelvként a Debian Linux disztribúciójában.

A Perl -t gyakran használják ragasztónyelvként , olyan rendszerek és interfészek összekötésére, amelyeket nem kifejezetten az együttműködésre terveztek, és " adatmungáláshoz ", azaz nagy mennyiségű adat konvertálásához vagy feldolgozásához, például jelentések készítéséhez. Valójában ezek az erősségek szorosan összefüggnek. Ez a kombináció a Perl-t népszerűvé teszi a rendszeradminisztrátorok számára , különösen azért, mert a rövid programokat, amelyeket gyakran " egysoros programoknak " neveznek , egyetlen parancssorban lehet megadni és futtatni .

A Perl kód hordozhatóvá tehető a Windows és a Unix rendszerben; ezt a kódot gyakran használják a szoftverszállítók (mind a COTS, mind az egyedi), hogy egyszerűsítsék a szoftverépítési és telepítési szkriptek csomagolását és karbantartását.

A Perl/Tk és a wxPerl általánosan használt grafikus felhasználói felületek hozzáadásához a Perl szkriptekhez.

Végrehajtás

A Perl központi értelmezőként, C nyelven íródott, valamint a modulok nagy gyűjteményével együtt, Perl és C nyelven írva. 2010 óta az értelmező 150 000 sor C kódból áll, és 1 MB -os futtatható fájlra fordítja a tipikus gépi architektúrákat. Alternatív megoldásként a tolmács összeállítható egy linkkönyvtárba, és beágyazható más programokba. Az elosztásban közel 500 modul található, amelyek 200 000 sor Perlit és további 350 000 sor C kódot tartalmaznak (a modulokban található C kód nagy része karakterkódoló táblázatokból áll ).

A tolmács objektum-orientált architektúrával rendelkezik. A Perl nyelv összes elemét - skalárokat, tömböket, kivonatokat, kódolókat, fájlkezelőket - a C szerkezetek képviselik az értelmezőben . Az ezeken a struktúrákon végzett műveleteket a makrók , typedef -ek és függvények nagy gyűjteménye határozza meg ; ezek alkotják a Perl C API -t . A Perl API zavarba ejtheti az avatatlanokat, de belépési pontjai következetes elnevezési sémát követnek , amely útmutatást nyújt azoknak, akik használják.

A Perl -tolmács élete nagyjából egy fordítási fázisra és egy futtatási szakaszra oszlik. Perlben a fázisok a tolmács életciklusának fő szakaszai. Minden tolmács csak egyszer megy át minden fázison, és a fázisok meghatározott sorrendben következnek.

A legtöbb, ami a Perl fordítási fázisában történik, a fordítás, és a legtöbb, ami a Perl futtatási szakaszában történik, a végrehajtás, de vannak jelentős kivételek. A Perl fontos módon használja ki a Perl -kód futtatásának képességét a fordítási fázisban. A Perl a fordítást a futási fázisba is késlelteti. Azok a kifejezések, amelyek azt jelzik, hogy az adott pillanatban milyen feldolgozás történik, a fordítási idő és a futási idő . A Perl a fordítási fázis legtöbb pontján fordítási időben van, de a fordítási idő a futási fázisban is megadható. A kód fordítási ideje egy karakterlánc argumentumban, amelyet a evalbeépítettnek adtak át, a futási fázisban következik be. A Perl gyakran futási időben van a fordítási fázisban, és a futási fázis nagy részét futási időben tölti. A BEGINblokkokban lévő kód futási időben, de a fordítási fázisban fut.

A fordítás idején a tolmács a Perl -kódot szintaktikai fába elemezi . Futási időben a fát sétálva hajtja végre a programot . A szöveget csak egyszer elemezzük, és a szintaxisfa végrehajtás előtt optimalizálva van, így a végrehajtás viszonylag hatékony. A szintaxisfa fordítási idejű optimalizálása magában foglalja az állandó hajtogatást és a kontextus propagálását, de a kukucskálók optimalizálása is történik.

A Perl-nek Turing-teljes nyelvtana van, mert az értelmezést befolyásolhatja a fordítási fázisban végrehajtott futásidejű kód. Ezért a Perl nem értelmezhető egyenes Lex / Yacc lexer / elemző kombinációval. Ehelyett az értelmező saját lexert valósít meg, amely egy módosított GNU bölény elemzővel koordinálja a nyelv kétértelműségeinek feloldását.

Gyakran mondják, hogy "Csak a perl tudja értelmezni a Perlt", ami azt jelenti, hogy csak a Perl értelmező ( perl) tudja elemezni a Perl nyelvet ( Perl ), de ez még általában sem igaz. Mivel a Perl -tolmács a fordítási fázisban képes szimulálni egy Turing -gépet, el kell döntenie a leállítási problémát , hogy minden esetben befejezze az elemzést. Régi eredmény, hogy a leállítási probléma eldönthetetlen, és ezért még a perl sem tudja mindig elemezni a Perlt. A Perl szokatlanul úgy dönt, hogy saját fordítási fázisában hozzáférést biztosít a felhasználónak a teljes programozási teljesítményéhez. A költségek az elméleti tisztaság szempontjából magasak, de a gyakorlati kényelmetlenségek ritkának tűnnek.

Egyéb programok, amelyek vállalják, hogy elemezni Perl, mint a forráskód-elemző és automatikus indenters , meg kell küzdeniük nemcsak egyértelmű szintaktikai szerkezeteket , hanem a döntésképtelenség Perl elemzés az általános esetben. Adam Kennedy PPI -projektje a Perl -kód dokumentumként történő elemzésére összpontosított (megőrizve integritását dokumentumként), ahelyett, hogy a Perl -t végrehajtható kódként értelmezte volna (ezt még maga a Perl sem képes mindig). Kennedy volt az, aki először sejtette, hogy "Perl elemzése szenved a" megállási problémától "", amit később be is bizonyítottak.

A Perl több mint 250 000 funkcionális teszttel rendelkezik a Perl alapnyelv számára, és több mint 250 000 funkcionális teszttel az alapmodulok számára. Ezek a normál építési folyamat részeként futnak, és kiterjedten gyakorolják a tolmácsot és annak alapvető moduljait. A Perl fejlesztői a funkcionális tesztekre támaszkodva biztosítják, hogy a tolmács módosításai ne vezessenek be szoftverhibákat ; Ezenkívül azok a Perl -felhasználók, akik látják, hogy a tolmács átadja működési tesztjeiket a rendszeren, nagyfokú bizalommal rendelkezhetnek a rendszer megfelelő működéséről.

Elérhetőség

A Perl kettős licenccel rendelkezik mind az Artistic License 1.0, mind a GNU General Public License alatt . A disztribúciók a legtöbb operációs rendszerhez rendelkezésre állnak . Különösen elterjedt a Unix és a Unix-szerű rendszereken, de a legtöbb modern (és sok elavult) platformra továbbították. Csak hat jelentett kivételtől eltekintve a Perl forráskódból fordítható le minden POSIX- kompatibilis vagy más módon Unix-kompatibilis platformon.

A klasszikus Mac OS környezethez szükséges szokatlan változtatások miatt a MacPerl nevű speciális portot egymástól függetlenül szállítottuk.

Az Átfogó Perl Archív Hálózat a támogatott platformok teljes listáját tartalmazza, linkekkel az egyes disztribúciókhoz. A CPAN a forrása azoknak a nyilvánosan elérhető Perl moduloknak is, amelyek nem képezik részét a Perl alapterjesztésnek.

ablakok

A Microsoft Windows felhasználói általában telepítik a Perl for Win32 natív bináris disztribúcióinak egyikét, leggyakrabban Strawberry Perl vagy ActivePerl . A Perl lefordítása forráskódból Windows alatt lehetséges, de a legtöbb telepítés nem rendelkezik a szükséges C fordítóval és építési eszközökkel. Ez megnehezíti a CPAN modulok telepítését is, különösen azokat, amelyek részben C -ben vannak írva.

Az ActivePerl egy zárt forráskódú terjesztés az ActiveState-től , amelynek rendszeres kiadásai követik a Perl alapvető kiadásait. A disztribúció korábban tartalmazta a Perl csomagkezelőt (PPM), amely népszerű eszköz a közös Perl modulok telepítésére, eltávolítására, frissítésére és használatának kezelésére; ez az eszköz azonban megszűnt az ActivePerl 5.28 -tól. Ide tartozik a PerlScript , a Windows Script Host (WSH) motorja, amely a Perl nyelvet implementálja. A Visual Perl egy ActiveState eszköz, amely hozzáadja a Perlt a Visual Studio .NET fejlesztői csomagjához. A VBScript -to -Perl átalakítót, valamint a Perl -fordítót a Windows számára, valamint az awk és sed -ből Perl -re konvertálókat is ez a vállalat gyártotta, és szerepel az ActiveState for Windows CD -n , amely tartalmazza az összes disztribúciót és a Komodo -t Az IDE és az első kivételével mindegyik a Unix/Linux/Posix változatban 2002 -ben és azt követően.

A Strawberry Perl egy nyílt forráskódú disztribúció a Windows számára. 2008 januárja óta rendszeresen, negyedévente jelenik meg, beleértve az új modulokat, mint visszajelzéseket és kéréseket. A Strawberry Perl célja, hogy képes legyen olyan modulokat telepíteni, mint a szabványos Perl disztribúciók más platformokra, beleértve az XS modulok összeállítását is.

A Cygwin emulációs réteg egy másik módja a Perl futtatásának Windows alatt. A Cygwin Unix-szerű környezetet biztosít a Windows rendszeren, és mind a Perl, mind a CPAN szabványos előre összeállított csomagként érhető el a Cygwin telepítőprogramban. Mivel a Cygwin a gcc -t is tartalmazza , a Perl forrásból történő fordítása is lehetséges.

A perl futtatható fájl a könyvtár számos Windows -erőforráskészletében megtalálható más szkripteszközökkel.

A Perl implementációi az MKS Toolkit , az Interix (a Windows Services for Unix korábbi megvalósításainak alapja ) és az UWIN tartozéka .

Adatbázis interfészek

A Perl szövegkezelő képességei felhasználhatók SQL lekérdezések generálására ; A tömbök, a kivonatok és az automatikus memóriakezelés megkönnyítik a visszaadott adatok gyűjtését és feldolgozását. Például Tim Bunce Perl DBI alkalmazásprogramozási felületén (API) az API argumentumai az SQL lekérdezések szövegei lehetnek; Így lehetséges, hogy a program több nyelven egyidejűleg (pl előállító weboldal segítségével HTML , JavaScript , és az SQL egy itt dokumentum ). A Perl változó interpoláció használata az SQL-lekérdezések programozható testreszabásához, valamint a Perl-tömbök vagy -kivonatok megadása struktúrákként, amelyek programszerűen tárolják az egyes SQL-lekérdezésekből származó adatkészleteket , lehetővé teszi a magas szintű adatkezelési mechanizmust Perl alprogram utólagos feldolgozására. A Perl korai verzióiban adatbázis-interfészeket hoztak létre úgy, hogy a tolmácsot újra összekapcsoltuk egy ügyféloldali adatbázis-könyvtárral. Ez kellően nehéz volt ahhoz, hogy csak néhány, a legfontosabb és legszélesebb körben használt adatbázis esetében történjen meg, és a kapott perlfuttatható fájlt egyszerre csak egy adatbázis-interfész használatára korlátozta .

A Perl 5 -ben az adatbázis -interfészeket Perl DBI modulok valósítják meg. A DBI (Database Interface) modul egyetlen, adatbázis-független interfészt mutat be a Perl alkalmazásoknak, míg a DBD (Database Driver) modulok mintegy 50 különböző adatbázis elérésének részleteit kezelik; a legtöbb ANSI SQL adatbázishoz vannak DBD illesztőprogramok .

A DBI gyorsítótárat biztosít az adatbázis-kezelésekhez és lekérdezésekhez, amelyek nagymértékben javíthatják a teljesítményt olyan hosszú élettartamú végrehajtási környezetekben, mint a mod perl , és segítenek a nagy volumenű rendszereknek elkerülni a terhelés-növekedést, mint a Slashdot-effektusban .

A modern Perl alkalmazásokban, különösen azokban, amelyek webes keretrendszerekkel, például a Catalyst segítségével íródtak , a DBI modult gyakran közvetve, objektum-relációs leképezőkön keresztül használják , például DBIx :: Class , Class :: DBI vagy Rose :: DB :: Objektum, amely SQL lekérdezéseket generál és átláthatóan kezeli az adatokat az alkalmazás szerzője számára.

Összehasonlító teljesítmény

A Computer Language Benchmarks Game összehasonlítja a tipikus programozási problémák megvalósításának teljesítményét több programozási nyelven. A beküldött Perl implementációk általában a memóriahasználati spektrum csúcspontja felé teljesítenek, és különböző sebességű eredményeket adnak. Perl teljesítménye a benchmark játékban a tolmácsolt nyelvekre jellemző.

A nagy Perl programok lassabban indulnak el, mint a hasonló programok fordított nyelveken, mert a perlnek minden alkalommal le kell fordítania a forrást. A YAPC :: Európa 2005 konferencián tartott előadásában és az azt követő "Időszerű kezdet" című cikkben Jean-Louis Leroy megállapította, hogy Perl-programjai a vártnál sokkal tovább futnak, mert a perl-tolmács jelentős időt fordított arra, hogy modulokat találjon túl nagy tartalmazza az utat. A Java-tól, a Python-tól és a Rubytól eltérően a Perl csak kísérleti támogatást nyújt az előfordításhoz. Ezért a Perl programok minden végrehajtáskor fizetik ezt a rezsi büntetést. A tipikus programok futtatási szakasza elég hosszú ahhoz, hogy az amortizált indítási idő nem jelentős, de a nagyon rövid végrehajtási időket mérő referenciaértékek valószínűleg torzulnak e költségek miatt.

A helyzet javítására számos eszközt vezettek be. Az első ilyen eszköz az Apache mod perl- je volt , amely a kicsi Perl-programok gyors meghívásának egyik leggyakoribb okát, a CGI webfejlesztést kívánta kezelni . Az ActivePerl a Microsoft ISAPI -n keresztül hasonló teljesítményjavításokat biztosít.

A Perl -kód összeállítása után a végrehajtási szakaszban további költségek merülnek fel, amelyek általában nem fordulnak elő olyan programok esetében, amelyek olyan fordított nyelveken íródnak, mint a C vagy a C ++. Ilyen rezsi például a bájtkód értelmezés, a referenciaszámláló memóriakezelés és a dinamikus típusellenőrzés.

Optimalizálás

A legkritikusabb rutinok más nyelveken is írhatók (például C ), amelyek egyszerű Inline modulokon vagy a bonyolultabb, de rugalmas XS mechanizmuson keresztül csatlakoztathatók a Perl -hez .

Perl 5

A Perl 5, amelyet általában "Perl" -nek neveznek, továbbra is aktívan fejlődik. A Perl 5.12.0 2010 áprilisában jelent meg néhány új funkcióval, amelyeket a Perl 6 tervezése befolyásolt, majd a Perl 5.14.1 (2011. június 17 -én jelent meg), a Perl 5.16.1 (2012. augusztus 9 -én jelent meg), és Perl 5.18.0 (megjelent 2013. május 18 -án). A Perl 5 fejlesztési verziói havonta kerülnek kiadásra, a főbb kiadások évente egyszer jelennek meg.

A "Perl programozás" kifejezésre irányuló internetes keresések relatív aránya a többi programozási nyelv hasonló kereséseivel összehasonlítva folyamatosan csökkent a 2005 -ös 10% -ról 2011 -ben körülbelül 2% -ra, 2020 -ra körülbelül 0,7% -ra.

Raku (Perl 6)

Camelia , a Perl 6 projekt logója

A 2000-es Perl-konferencián Jon Orwant egy jelentős új nyelvi kezdeményezés mellett érvelt. Ennek eredményeképpen úgy döntöttek, hogy megkezdik a Perl 6 nevű nyelv átalakítását. Az új nyelvi jellemzőkre vonatkozó javaslatokat a Perl közösség egésze kérte, amely több mint 300 RFC -t nyújtott be .

Wall az elkövetkező néhány évet az RFC -k megemésztésével és a Perl 6 koherens keretrendszerévé történő szintetizálásával töltötte. A Perl 6 -ra vonatkozó tervét az „apokalipszisek” nevű dokumentumsorozatban mutatta be - számozva, hogy megfeleljen a Programming Perl fejezeteinek . 2011 januárjától a Perl 6 fejlesztő specifikációját a Synopses nevű tervezési dokumentumokba foglalták - számozva, hogy megfeleljenek az Apokalipszisnek.

Bradley M. Kuhn dolgozata , amelyet Wall felügyelt, a Java virtuális gép lehetséges használatát tekintette a Perl futási idejének. Kuhn tézise azt mutatta, hogy ez a megközelítés problematikus. 2001-ben úgy döntöttek, hogy a Perl 6 egy Parrot nevű, többnyelvű virtuális gépen fog futni . Ez azt jelenti, hogy a papagájt célzó más nyelvek natív hozzáférést kapnak a CPAN-hoz , lehetővé téve bizonyos szintű nyelvek közötti fejlődést.

2005 -ben Audrey Tang létrehozta a Pugs projektet, a Perl 6 megvalósítását Haskellben . Ez a Perl 6 nyelv tesztplatformjaként működött és továbbra is működik (elkülönítve a tényleges megvalósítás fejlesztésétől) - lehetővé téve a nyelvtervezők számára a felfedezést. A Pugs projekt aktív Perl/Haskell többnyelvű közösséget hozott létre a Libera Chat #raku IRC csatorna körül . A Perl 6 tervezőcsapata sok funkcionális programozási hatást elnyelt.

2012 -ben a Perl 6 fejlesztése elsősorban két fordítóra összpontosult:

  1. Rakudo , a Parrot virtuális gépen és a Java virtuális gépen futó megvalósítás.
  2. Niecza , amely a Common Language Runtime -ot célozza .

2013-ban bejelentették a MoarVM („ Metamodel On A Runtime”), egy C nyelvű , elsősorban Rakudo számára tervezett virtuális gépet .

2019 októberében a Perl 6 -ot átnevezték Raku -ra.

2017 -től csak a Rakudo implementáció és a MoarVM aktív fejlesztés alatt áll, és más virtuális gépek, például a Java Virtual Machine és a JavaScript is támogatottak.

Perl 7

A Perl 7 -et 2020. június 24 -én jelentették be a "The Perl Conference in the Cloud" -on, a Perl 5 utódjaként. A Perl 5.32 alapján a Perl 7 -et úgy tervezték, hogy visszafelé kompatibilis legyen a modern Perl 5 kóddal; A Perl 5 kód, főzőlap (pragma) fejléc nélkül hozzá use compat::perl5;kell adni, hogy kompatibilis maradjon, de a modern kód elveszítheti a kazánlemez egy részét.

Perl közösség

Perl kultúrája és közössége maga a nyelv mellett fejlődött. A Usenet volt az első nyilvános helyszín, ahol bemutatták a Perl-t, de fejlődése során a Perl közösségét az egyre szélesebb körű internet-alapú szolgáltatások, köztük a világháló bevezetése alakította ki. A Perlt körülvevő közösség voltaképpen Wall első "Hagyma állapota" című beszélgetésének témája.

A hagyma állapota

State of the Onion a neve Wall éves vitaindító stílusú összefoglalók az elért Perl és a közösségben. Jellemző rájuk a jellegzetes humora, amely Perl kultúrájára, a tágabb hacker -kultúrára, Wall nyelvi hátterére, néha családi életére és esetenként akár keresztény hátterére is utal.

Minden előadást először különböző Perl konferenciákon tartanak, és végül online is közzétesznek.

Perl szórakozás

JAPH -ok
Az e -mailben, a Usenetben és az üzenőfalban közzétett bejegyzésekben a " Csak egy újabb Perl hacker " (JAPH) programok gyakori trendek, amelyeket Randal L. Schwartz , a Perl egyik legkorábbi professzionális oktatója hozott létre. A Perl -kultúra nyelvén a Perl -programozókat Perl -hackereknek nevezik, és ebből származik az a gyakorlat, hogy rövid programokat írnak a "Csak egy másik Perl -hacker" kifejezés kinyomtatásához. Az eredeti koncepció szellemében ezek a programok közepesen zavarosak és elég rövidek ahhoz, hogy beleférjenek egy e -mail vagy Usenet üzenet aláírásába. A Schwartz által kifejlesztett "kanonikus" JAPH a végén vesszőt tartalmaz, bár ezt gyakran kihagyják.
Perl golf
A Perl "golf" a szórakozás, hogy a Perl programban használt karakterek számát (kulcs "ütések") a minimálisra csökkentsék, nagyjából ugyanúgy, ahogy a golfozók a lehető legkevesebb lövést igyekeznek egy körben. A kifejezés első használata hangsúlyozta a különbséget a gyalogoskódok között, amelyek az újonnan érkezők tanítására szolgálnak, és a tömör hackeléseket, amelyek valószínűleg szórakoztatják a tapasztalt Perl -programozókat , és ez utóbbira példa a JAPH -ok , amelyeket már használtak az aláírásokban a Usenet -bejegyzésekben és máshol. Hasonló mutatványok az APL nyelven az előző évtizedekben névtelen szórakozásnak számítottak . A Perl használata RSA titkosítást végrehajtó program írásához széles körű és gyakorlati érdeklődést váltott ki ez időtöltés iránt. A következő években a " code golf " kifejezést más nyelveken alkalmazták a szórakozásra. A Perl Golf Apocalypse -t a Perl Conference 4.0 -n tartották Montereyben, Kaliforniában 2000 júliusában.
Zavartság
A C -hez hasonlóan a zavaros kódversenyek is jól ismert időtöltések voltak a kilencvenes évek végén. Az Obfuscated Perl Contest a Perl Journal által 1996 és 2000 között megrendezett verseny volt, amely a Perl szintaktikai rugalmasságának ívhatását eredményezte. Díjakat adtak ki olyan kategóriákért, mint a "legerősebb"-hatékonyan kihasználó programok-és a "legjobb négysoros aláírás" azokért a programokért, amelyek négy, 76 karakterből álló sorba illeszkednek egy Usenet aláírási blokk stílusában .
Költészet
A Perl költészet az a gyakorlat, amikor legális Perl -kódként összeállítható verseket írnak, például a Black Perl néven ismert darabot . A Perl költészetet a Perl nyelvben használt nagyszámú angol szó teszi lehetővé. Az új verseket rendszeresen beküldik a PerlMonks közösséghez .

Perl az IRC -n

Számos IRC csatorna támogatja a nyelvet és egyes modulokat.

IRC hálózat Csatornák
irc.libera.chat #perl #raku
irc.perl.org #moose #poe #catalyst #dbix-class #perl-help #distzilla #epo #corehackers #sdl #win32 #toolchain #padre #dancer
irc.slashnet.org #perlmonks
irc.oftc.net #perl
irc.efnet.net #segíteni
irc.rizon.net #perl
irc.debian.org #debian-perl (Perl modulok csomagolása Debian számára)

CPAN Acme

Számos példa létezik a CPAN -ra pusztán szórakoztatásra írt kódra is . Lingua::Romana::Perligatapéldául lehetővé teszi a programok latin nyelvű írását . Egy ilyen program végrehajtása után a modul lefordítja a forráskódot normál Perl -re és futtatja azt.

A Perl közösség félretette az " Acme " névteret azoknak a moduloknak, amelyek szórakoztató jellegűek (de a hatóköre kiszélesedett, hogy felfedező vagy kísérleti kódot vagy más olyan modult is tartalmazzon, amelyet soha nem használnak a gyártásban). Az Acme modulok egy részét szándékosan, szórakoztató módon valósítják meg. Ez magában foglalja Acme::Bleacha Acme::névtér egyik első modulját , amely lehetővé teszi a program forráskódjának "fehéredését" (azaz minden karakter helyettesítést), és mégis működik.

Példakód

A Perl régebbi verzióiban a Hello World programot így írnánk :

print "Hello, World!\n";

Itt van egy bonyolultabb Perl program, amely másodperceket számol vissza egy adott kezdőértékből:

#!/usr/bin/perl
use strict;
use warnings;

my ( $remaining, $total );

$remaining = $total = shift(@ARGV);

STDOUT->autoflush(1);

while ( $remaining ) {
    printf ( "Remaining %s/%s \r", $remaining--, $total );
    sleep 1;
}

print "\n";

A perl tolmács egyszeri parancsfájlokhoz is használható a parancssorban. A következő példa (sh-kompatibilis héjból, például Bash-ból hívva) lefordítja a "Bob" karakterláncot az aktuális könyvtárban .txt végződésű fájlokban "Robert" -re:

$ perl -i.bak -lp -e 's/Bob/Robert/g' *.txt

Kritika

A Perl-t " vonalzajnak " és írható nyelvnek nevezték kritikusai. A legkorábbi ilyen említés a Randal L. Schwartz által írt Perl 4 oktatókönyv , a Learning Perl című könyv első kiadásában volt , amelynek első fejezetében ezt állítja: "Igen, néha Perl úgy néz ki, mint a vonalzaj az avatatlanok számára, de a tapasztalt Perl programozónak úgy tűnik, mint egy ellenőrző összegű vonalzaj, amelynek feladata az élet. " Azt is kijelentette, hogy a "megfelelő gondossággal" történő kódolással elkerülhető az a vád, hogy a Perl csak írható nyelv. A Perl áttekintő dokumentum, a perlintro megállapítja, hogy a beépített "mágikus" skaláris változók neve "írásjeleknek vagy vonalzajnak tűnik". Az angol modul azonban hosszú és rövid angol alternatívákat is kínál. A perlstyle dokumentum kijelenti, hogy a szabályos kifejezésekben a sorzaj csökkenthető a módosító használatával, hogy hozzáadjon szóközöket. /x

A Perl 6 GYIK szerint a Perl 6 -ot úgy tervezték, hogy enyhítse a "szokásos gyanúsítottakat", amelyek kiváltják a Perl 5 kritikusainak "vonalzaj" állítását, beleértve az "írásjelek változóinak többségének" eltávolítását és a regex szintaxis fertőtlenítését. . A Perl 6 GYIK azt is kimondja, hogy amit néha Perl vonalzajának neveznek, az "a nyelv tényleges szintaxisa", ahogy a gerundumok és az elöljárók is az angol nyelv részét képezik . Egy 2012. decemberi blogbejegyzésben, annak ellenére, hogy azt állította, hogy "a Rakudo Perl 6 kudarcot vallott, és továbbra is kudarcot vall, hacsak nem kap felnőtt felügyeletet", a chromatic kijelentette, hogy a Perl 6 kialakítása "jól meghatározott nyelvtannal" és " továbbfejlesztett típusú rendszer, egységes objektumrendszer intelligens metamodellel, metaoperátorokkal és világosabb kontextusrendszerrel, amely olyan kényelmet biztosít, mint az átható lustaság ". Azt is kijelentette, hogy "a Perl 6 olyan koherenciával és konzisztenciával rendelkezik, amely hiányzik a Perl 5 -ből".

Lásd még

Hivatkozások

További irodalom

Külső linkek