Perl

Wikipedia
Loikkaa: valikkoon, hakuun
Perl
Paradigma proseduraalinen, olio
Tyypitys dynaaminen, heikko
Yleinen suoritusmalli tulkattava
Muistinhallinta Automaattinen roskienkeräys
Julkaistu 1987
Kehittäjä Larry Wall
Vakaa versio 5.14.2 (26. syyskuuta 2011)
Vaikutteet AWK, BASIC-PLUS, C, C++, Lisp, Pascal, Python, Sed, Unix shell
Vaikuttanut Python, PHP, Ruby
Käyttöjärjestelmä alustariippumaton
Verkkosivu www.perl.org
Uutisryhmä comp.lang.perl.misc

Perl (Practical Extraction and Report Language) on Larry Wallin kehittämä tulkattava proseduraalinen skriptimäinen ohjelmointikieli. Se on hyvin monimuotoinen ohjelmointikieli ja sen oppiminen on helppoa. Toisaalta sen ohjelmointitapojen moninaisuus ei pakota ohjelmoijaa "siistiin" koodiin, joten Perl-nimen on myös vitsailtu tulevan sanoista "Pathologically Eclectic Rubbish Lister".

Perlin syntaksissa on yhdistelty vaikutteita awk:sta, sed:istä, shell-skripteistä, C-kielestä ja Lispistä. Kaikenlaiset säännölliset lausekkeet esimerkiksi tekstinkäsittelyssä, data-analyysi, datan käsittely sekä modularisointi ovat helppoa Perlillä, minkä takia se onkin suosittu kieli myös unix-ylläpitäjien keskuudessa. Perlistä onkin sanottu, että se on ohjelmointikieli jolla helpot asiat ovat helppoja ja vaikeat asiat mahdollisia. Kielessä on pyritty suureen ilmaisuvapauteen, ja ongelman voi ratkaista monella tavalla. Perliä on sanottu myös "Internetin roudarinteipiksi"[1].

Laajojen Perlillä kirjoitettujen ohjelmien vaikea ylläpidettävyys, yhdistettynä säännöllisten lausekkeiden ilmaisun tehokkuuteen, on tehnyt Perl-kieliset yhden rivin ohjelmat (one-liners) suosituksi. Esimerkiksi vaihda kaikista tiedostoista "foo" tekstiksi "bar":

 $ perl -p -i -e 's/foo/bar/g' *

Suosio[muokkaa | muokkaa wikitekstiä]

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 (CGI-rajapinta CGI.pm, 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 [2]. Lisäksi Suomessa on joukko yrityksiä, jotka tuottavat laajojakin ohjelmistoja Perl-kielellä.

Historia[muokkaa | muokkaa wikitekstiä]

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 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 kanssa.

Perl 5:n kehitys jatkui vuoteen 1994. Perl5-porters-postituslista perustettiin toukokuussa 1994, Perlin kehitystä ja muille alustoille porttausta varten. Se pysyi pääasiallisena 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:ttä kehitetään aktiivisesti. Se sisältää nykyään tuen Unicodelle. Viimeisin Perlin versio on 5.14.2. 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 ja Parrotia, kehitetään aktiivisesti.

Kielen ominaisuuksia[muokkaa | muokkaa wikitekstiä]

Perlin yleinen rakenne periytyy C-kielestä. Perl on rakenteellinen ohjelmointikieli, sisältäen 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 [1], 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 sed:stä. Nämä helpottavat ja selventävät jäsennystä ja tekstin käsittelyä.

Perl 5:een on lisätty moninaisia tietorakenteita ja oliopohjainen ohjelmointimalli. Nämä sisältävät viittaukset, paketit ja oliopohjaisen metodien suorittamisen. Lisäksi siihen lisättiin näkyvyysalue muuttujille. Muuttujien näkyvyysalueet tekevät helpommaksi selkeän koodin kirjoittamisen.

Kaikki Perlin versiot hoitavat automaattisesti datan tyypityksen ja muistin hallinnan. Tulkki tietää tyypin ja muistin määrän mitä objekti tarvitsee; 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 vuotaa muistia, kaataa tulkkia tai sekoittaa sisäistä datan esitystä.

Datatyypit[muokkaa | muokkaa wikitekstiä]

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ä taulukkoja, jotka sisältävät skalaareja ja ne 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. Esimerkiksi,

 $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[muokkaa | muokkaa wikitekstiä]

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 tiukka syntaksi käyttöön, eli kolmannen ja neljännen rivin muuttujat on pakko määritellä käyttäen my tai our -avainsanaa.

Neljännellä rivillä muuttuja $w interpoloidaan muuttujaan $h, joka tulostetaan rivillä viisi.

Jos tiedostolla on suoritusoikeudet (chmod +x hello.pl) tiedosto voidaan ajaa suoraan:

$ ./hello.pl
Hello world!

Muuten käytetään Perl-tulkkia

$ perl hello.pl
Hello world!

Katso myös[muokkaa | muokkaa wikitekstiä]

Lähteet[muokkaa | muokkaa wikitekstiä]

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]