Perl - Perl
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 . |
Stabil kiadás | |
Előzetes verzió | 5.35.4 / 2021. szeptember 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 |
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 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
5.4 | 1999-04-29 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.5 | 1999-03-29 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.6 | 2003-11-15 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.8 | 2008-12-14 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.10 | 2009-08-23 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.12 | 2012-11-10 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.14 | 2013-03-10 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.16 | 2013-03-11 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.18 | 2014-10-02 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.20 | 2015-09-12 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.22 | 2017-07-15 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.24 | 2018-04-14 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.26 | 2018-11-29 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.28 | 2020-06-01 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.30 | 2020-06-01 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.32 | 2021-01-23 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.34 | 2021-05-20 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.35 | 2021-05-21 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.36 | 2022-05-20 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
7.0 | 2022? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 VERSION
szintaxis, 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 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 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
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 eval
beé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 BEGIN
blokkokban 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 perl
futtatható 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)
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:
- Rakudo , a Parrot virtuális gépen és a Java virtuális gépen futó megvalósítás.
- 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::Perligata
pé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::Bleach
a 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
- Learning Perl 6. kiadás (2011), O'Reilly. Kezdő szintű bemutatkozás a Perl-hez.
- Beginning Perl 1. kiadás (2012), Wrox. Kezdő oktatóprogram azok számára, akik még nem ismerik a programozást, vagy csak újak a Perl számára.
- A Modern Perl archiválva 2011. december 22 -én, a Wayback Machine 2. kiadásában (2012), Onyx Neon. Leírja a modern Perl programozási technikákat.
- Programming Perl 4. kiadás (2012), O'Reilly. A Perl végleges hivatkozása.
- Effective Perl Programming 2nd Edition (2010), Addison-Wesley. Középfokú- haladó szintű útmutató az idiomatikus Perl írásához.
- Perl szakácskönyv , ISBN 0-596-00313-7 . Gyakorlati Perl programozási példák.
- Dominus, Mark Jason (2005). Magasabb rendű Perl . Morgan Kaufmann. ISBN 978-1-55860-701-9. Funkcionális programozási technikák a Perl -ben.