Perl

Suosio

Monipuolinen Perl on suosittu työkalu ylläpitäjien keskuudessa. 1990-luvun lopulta alkaen Perl on ollut erityisen suosittu WWW-ohjelmoijien työkaluna ja siihen on kehitetty joukko tätä tukevia kirjastoja (kuten CGI-rajapinta CGI.pm ja tietokantarajapinta DBI). Perl on suosittu kieli tiettyjen nopeaa prototyypitystä hyödyntävien yhteisöjen keskuudessa, esimerkiksi kielitieteessä ja bioinformatiikassa, varsinkin kun kielen oppiminen ja toimivan koodin kirjoittaminen on nopeaa uudellekin ohjelmoijalle. Perl-kielisillä ohjelmilla oli esimerkiksi merkittävä rooli ihmisen geeniperimää kartoittavassa Human Genome Project -hankkeessa . Lisäksi Suomessa on joukko yrityksiä, jotka tuottavat laajojakin ohjelmistoja Perl-kielellä.
2010-luvulla Perlin suosio on vähentynyt. Uudet webbisivustot tuotetaan jo muilla tekniikoilla.

Historia

Larry Wall alkoi kehittää Perliä vuonna 1987 ja julkaisi version 1.0 comp.sources.misc-uutisryhmässä joulukuussa 1987. Kieli kasvoi nopeasti muutamina seuraavina vuosina. Perl 2 julkaistiin vuonna 1988, sisältäen parannellun säännöllisten lausekkeiden moottorin. Perl 3 julkaistiin vuotta myöhemmin ja siihen oli lisätty tuki binääriselle datalle.
Vuoteen 1991 asti ainoa dokumentaatio Perlille oli yksi ainoa manuaalisivu. Vuonna 1991 Programming Perl (”the Camel Book”) julkaistiin, ja samaan aikaan Perlin versionumero nousi neloseen. Ei sen takia, että kieleen olisi tullut suuria muutoksia, vaan erottaakseen version, joka dokumentoitiin kirjassa.
Perl 4 kulki läpi monien päivitysten huipentuen versioon 4.036 vuonna 1993. Siinä vaiheessa Larry Wall jätti Perl 4:n ja rupesi työskentelemään Perl 5:n parissa.
Perl 5:n kehitys jatkui vuoteen 1994. Perl5-porters-postituslista perustettiin toukokuussa 1994 Perlin kehitystä ja muille alustoille porttausta varten. Se pysyi merkittävimpänä keskustelupaikkana Perl 5:n kehitykselle ja porttaukselle.
Perl 5 julkaistiin 17. lokakuuta 1994. Se oli lähes kokonaan uudelleen kirjoitettu tulkki ja sisälsi monia uusia ominaisuuksia, sisältäen oliot, viittaukset, pakkaukset ja moduulit. Moduulit tarjosivat tavan laajentaa kieltä muuttamatta tulkkia.
Lokakuun 26. päivänä 1995 perustettiin Comprehensive Perl Archive Network. CPAN on kokoelma web-sivuja, jotka varastoivat Perl-koodia, binäärejä, dokumentaatiota, skriptejä ja moduuleja. Alun perin jokaiselle CPAN-sivulle piti mennä oman URL-osoitteen avulla; nykyään yksi URL vie CPAN sivulle: http://cpan.org.
Vielä vuonna 2010 Perl 5:tä kehitettiin aktiivisesti. Nykyään se sisältää tuen Unicodelle. Uusin Perlin versio on 5.28.0. Suomalainen Jarkko Hietaniemi on yksi Perl 5:n kehittäjistä.
Vuonna 2001 päätettiin, että Perl 6 ajetaan Parrot-nimisen virtuaalikoneen päällä. Vuonna 2010 molempia, Perl 6:ta ja Parrotia, kehitetään aktiivisesti.

Kielen ominaisuuksia

Perlin yleinen rakenne periytyy C-kielestä. Perl on rakenteellinen ohjelmointikieli, joka sisältää muuttujia, lausekkeita, aaltosulkein erotettuja lohkoja, kontrollirakenteita ja aliohjelmia.
Perliin on otettu ominaisuuksia myös Shell-ohjelmoinnista. Kaikki nykyiset (Perl 5 -) ohjelmat tulkataan. Koska muuttujien nimien edessä on tietyt merkit , niitä voi helposti sisällyttää merkkijonoihin. Kuten Unixin shellissä, myös Perlissä on sisäänrakennettuja funktioita yleisille tehtäville, kuten järjestämiselle ja järjestelmän palveluiden käyttöön.
Perl lainaa assosiatiiviset taulukot AWK:sta ja säännölliset lausekkeet Sedistä. Ne helpottavat ja selventävät jäsennystä ja tekstin käsittelyä.
Perl 5:een on lisätty moninaisia tietorakenteita ja oliopohjainen ohjelmointimalli, joihin sisältyvät viittaukset, paketit ja oliopohjaisen metodien suorittamisen. Lisäksi Perl 5:een lisättiin muuttujien näkyvyysalueet, jotka helpottavat selkeän koodin kirjoittamista.
Kaikki Perlin versiot hoitavat automaattisesti datan tyypityksen ja muistin hallinnan. Tulkki tuntee objektin tyypin ja sen tarvitseman muistin määrän; se varaa tai vapauttaa muistia silloin, kun se on tarpeellista. Lailliset tyyppimuunnokset tehdään automaattisesti suorituksen aikana, ja laittomat aiheuttavat käännösvirheen. Perlissä ei ole mahdollista aiheuttaa muistivuotoa, kaataa tulkkia tai sekoittaa sisäistä datan esitystä.

Datatyypit

Perlissä on kolme sisäänrakennettua datatyyppiä: skalaarit, taulukot ja hajautustaulut (hashes). Skalaari sisältää yhden arvon, kuten numeron, tekstiä tai viittauksen. Taulukot ovat skalaareiden järjestettyjä listoja, jotka on indeksoitu alkaen numerosta 0. Hajautustaulut ovat assosiatiivisia, järjestämättömiä taulukoita, jotka sisältävät skalaareja ja jotka on indeksoitu avaimen avulla.
Skalaarit, taulukot ja hajautustaulut voidaan liittää nimettyihin muuttujiin. Muuttujan ensimmäinen merkki ($, % tai @) kuvaa muuttujan sisältämää datatyyppiä. Loppuosa on muuttujan nimeä.
Skalaarin nimi alkaa aina merkillä ”$”, vaikka muuttuja kuuluisi taulukkoon tai hajautustauluun:
 $kuukaudet[11]        # @kuukaudet-taulukon kahdestoista elementti
 $osoitteet{'Pekka'}   # %osoitteet-hajautustaulun 'Pekka'-elementti

Taulukot alkavat ”@”-merkillä…
 @kuukaudet = ("tammikuu", "helmikuu");
 $toinen = $kuukaudet[1]; # $toinen = helmikuu
 $maara = @kuukaudet;     # $maara = 2

… ja hajautustaulukot puolestaan ”%”-merkillä.
 %kuukaudet = (
     "ensimmäinen" => "tammikuu", 
     "toinen"      => "helmikuu",
     "kolmas"      => "maaliskuu"
 );
 $toinen = $kuukaudet{ "toinen" }; # $toinen = helmikuu

Esimerkki

Tiedosto hello.pl:
 #!/usr/bin/perl -w
 use strict;
 my $w = "world";
 my $h = "Hello $w!\n";
 print $h;
Ensimmäisellä rivillä kerrotaan Unix-järjestelmälle, että ohjelma ajetaan
/usr/bin/perl-ohjelmalla.
Toisella rivillä määritellään käyttöön tiukka syntaksi, eli kolmannen ja neljännen rivin muuttujat on pakko määritellä käyttäen avainsanaa my tai our.
Neljännellä rivillä muuttuja $w interpoloidaan muuttujaan $h, joka tulostetaan rivillä viisi.
Jos tiedostolla on suoritusoikeudet (chmod +x hello.pl), se voidaan ajaa suoraan:
$ ./hello.pl
Hello world!
Muuten käytetään Perl-tulkkia:
$ perl hello.pl
Hello world!