Manpages

NIMI

perl − Practical Extraction and Report Language (Käytännöllinen poiminta- ja raportointikieli)

YLEISKATSAUS

perl

−sTuU ]

−hv ] [ −V[:konfigurointumuuttuja] ]

−cw ] [ −d[:debuggeri] ] [ −D[numero/lista] ]

−pna ] [ −Fkuvio ] [ −l[oktaali] ] [ −0[oktaali] ]

−Ihak ] [ −m[]moduuli ] [ −M[]’moduuli...’ ]

−P ]

−S ]

−x[hak] ]

−i[laajennos] ]

−e ’komento’ ] [ -- ] [ ohjelmatiedosto ] [ argumentti ]...

Käytön helpottamiseksi Perl-manuaali on jaettu useisiin eri osiin:

    perl        Yleiskatsaus Perliin (tämä man-sivu)
    perldelta   Edellisen Perl-version jälkeen tulleita muutoksia
    perlfaq     Yleisimmät Perlistä esitetyt kysymykset
    perldata    Perlin tietorakenteet
    perlsyn     Perlin syntaksi
    perlop      Perlin operaattorit ja presedenssi
    perlre      Perlin säännölliset lausekkeet
    perlrun     Perlin suoritus ja optiot
    perlfunc    Perlin sisäänrakennetut funktiot
    perlvar     Perlin ennaltamääritellyt muuttujat
    perlsub     Perlin aliohjelmat
    perlmod     Perlin moduulit: miten ne toimivat
    perlmodlib  Perlin moduulit: niiden kirjoittaminen ja käyttäminen
    perlform    Tekstinmuotoilu Perlillä
    perllocale  Perlin locale-tuki
    perlref     Perlin viitteet
    perldsc     Perlin tietorakenteet: esittely
    perllol     Perlin tietorakenteet: lista listoista
    perltoot    Perlin OOP-opas
    perlobj     Perlin objektit
    perltie     Perlin objektit peitettyinä yksinkertaisten muuttujien
                alle
    perlbot     OOP-esimerkkejä ja -niksejä Perlillä
    perlipc     Prosessien välinen kommunikointi Perlillä
    perldebug   Virheenetsintä Perlillä (debuggaus)
    perldiag    Perlin diagnostiikkaviestit
    perlsec     Turvallisuus Perlissä
    perltrap    Mitä sudenkuoppia Perlissä on noviiseille
    perlstyle   Perlin tyyliopas
    perlpod     Perl POD (Plain Old Documentation)
    perlbook    Tietoa Perl-kirjasta

    perlembed   Miten upottaa Perliä C/C++ -ohjelmiisi
    perlapio    Perlin sisäinen IO-abstraktiorajapinta
    perlxs      Perlin XS API (sovellusohjelmarajapinta)
    perlxstut   Perlin XS-opas
    perlguts    Perlin sisäiset funktiot laajennosten tekijöille
    perlcall    Kuinka kutsua Perliä C-ohjelmista

(Jos luet näitä ensimmäistä kertaa ja aiot käydä kaikki lävitse, ylläehdotetun lukujärjestyksen pitäisi olla mukavin ohjeissa olevien viitteiden kannalta.)

Oletusarvoisesti kaikki ylläolevat ohjesivut ovat asennettuina hakemistoon /usr/local/man/.

Perlin moduuleista on olemassa laajalti lisää dokumentteja. Perlin oletusarvoinen konfiguraatio asettaa nämä lisädokumentit hakemistoon /usr/local/lib/perl5/man (tai man-alihakemistoon Perlin kirjastohakemiston alle). Osa tästä dokumentaatiosta on vakiona mukana Perl-jakelupaketissa, mutta löydät sieltä dokumentteja myös muista Perl-moduuleista.

Sinun pitäisi kyetä lukemaan Perlin dokumentteja man(1) -ohjelmallasi lisäämällä sopivat hakemistot niille asianmukaisiin käynnistystiedostoihin tai MANPATH-ympäristömuuttujaan. Katsoaksesi mihin Perl-konfiguraatiosi asensi ohjesivut, kirjoita:

    perl -V:man.dir

Jos hakemistoilla on sama juurihakemisto, kuten /usr/local/man/man1 ja /usr/local/man/man3, sinun täytyy lisätä vain se juurihakemisto (/usr/local/man) man(1) -konfiguraatiotiedostoihisi tai MANPATH-ympäristömuuttujaasi. Muutoin sinun pitää lisätä molemmat juurihakemistot.

Jos edellämainittu ei jostain syystä toimi, voit yhä käyttää mukana tulevaa skriptiä perldoc katsoaksesi tietoja moduuleista. Saatat tällöin haluta korvata man-ohjelmasi jollain toisella vastaavalla.

Jos ohjelmassasi on jokin omituinen vika etkä tiedä mistä etsisit apua, kokeile ensiksi kuitenkin valitsinta -w. Se näyttää usein tarkan ongelmakohdan paikan.

KUVAUS

Perl on kieli, joka on optimoitu mielivaltaisten tekstitiedostojen läpikäymiseen, niissä olevan tiedon keruuseen sekä raporttien tulostamiseen em. tietojen perusteella. Se on myös hyvä kieli monien järjestelmän ylläpidossa käytettävien tehtävien hoitamiseen. Kieli on ennemmin suunniteltu käytännölliseksi (helppo käyttää, tehokas, valmis) kuin kauniiksi (pieni, elegantti, minimaalinen).

Perl yhdistää (no, ainakin tekijän mielestä) jotkin C:n, sed:in, awk:in sekä sh:n parhaista ominaisuuksista (Kielihistorioitsijat mainitsevat myös jotkin muunnelmat kielistä csh, Pascal sekä jopa BASIC−PLUS). Näin ollen em. kieliä tuntevien ihmisten pitäisi omaksua Perl helpohkosti. Lausekesyntaksi muistuttaa paljolti C:n vastaavaa. Toisin kuin useimmat Unix-työkalut, Perl ei aseta rajoituksia tietorakenteidesi koolle; jos vain muisti riittää, Perl voi lukea kokonaisen tiedoston yhteen ainoaan merkkijonoon. Rekursiolla ei ole syvyysrajoituksia. Lisäksi hajautustaulut (ennen tunnetut nimellä "assosiatiiviset taulukot") kasvavat tarvittaessa estääkseen suorituskyvyn heikkenemisen. Perl käyttää kehittyneitä merkkijonontunnistustekniikoita käydäkseen lävitse suuria määriä tietoa hyvin nopeasti. Vaikka Perl onkin optimoitu tekstidatan lukemiseen, se voi käsitellä myös binääridataa sekä saa tarvittaessa näyttämään dbm-tiedostot hajautustauluilta. Setuid Perl -skriptit ovat turvallisempia kuin C-ohjelmat tietovuon jäljitysmekanismin ansiosta, mikä estää monien typerien tietoturvariskien syntymisen.

Jos sinulla on ongelma, jonka ratkaisemiseen käyttäisit tavallisesti sed:iä, awk:ia tai sh:ta, mutta nämä eivät tarjoa riittäviä keinoja sen ratkaisemiseen - tai ohjelman pitää toimia hieman nopeammin etkä halua kirjoittaa mokomaa C:llä - Perl voi olla juuri sopiva. Myös sed- sekä awk-skriptit voidaan muuttaa Perl-skripteiksi tätä varten kehitetyllä ohjelmalla.

Mutta ei tässä vielä kaikki...

Perl-versio 5 on kirjoitettu lähes täysin uudestaan ja tarjoaa seuraavat lisäedut:
• Monia uusia käytettävyyslaajennoksia

Nyt on mahdollista kirjoittaa paljon luettavampaa Perl-koodia (jopa säännöllisten lausekkeiden sisällä). Ennen niin kryptiset Perlin sisäiset muuttujanimet voidaan korvata helpommin muistettavilla tunnuksilla. Virheviestit ovat informatiivisempia ja valinnaiset varoitukset poimivat monet niistä virheistä, joita aloittelijat saattavat tehdä. Seuraavaa ei voikaan korostaa liikaa: Aina kun ohjelmasi käyttäytyy oudosti, koeta −w valitsinta!!! Aina kun ohjelmasi ei käyttäydy omituisesti, koeta kuitenkin valitsinta −w.

• Yksinkertaistettu syntaksi

Uusi yacc-kielioppi on puolet vanhemman koosta. Monta mielivaltaista kielioppisääntöä on nyt säännönmukaistettu. Varattujen sanojen määrä on leikattu kolmannekseen. Tästä huolimatta lähes kaikki vanhat Perl-skriptit toimivat ilman tarvetta muutoksiin.

• Leksikaalinen näkyvyys

Perl-muuttujat voidaan esitellä nyt leksikaalisen näkyvyysalueen sisällä, kuten "auto"-muuttujat C:ssä. Tämä on paitsi tehokkaampaa, tarjoaa myös paremmat mahdollisuudet tehdä "suuren mittakaavan ohjelmia" nimiavaruuden yksityisyyden kautta. Nimettömät aliohjelmat tuovat esille leksikaalisten muuttujien syvän bindauksen (closures).

• Mielivaltaisesti lomitetut tietorakenteet

Mikä tahansa skalaariarvo, mukaanlukien mikä hyvänsä taulukkoelementti, voi sisältää viitteen mihin tahansa toiseen muuttujaan tai aliohjelmaan. Voit helposti luoda nimettömiä muuttujia ja aliohjelmia. Perl pitää huolta viitteiden laskemisesta.

• Modulaarisuus ja uudelleenkäytettävyys

Perl-kirjasto on nyt määritelty moduulein, jotka voidaan helposti jakaa eri pakkausten kesken. Pakkaus voi valinnan mukaan joko lukea osan moduulin ulosnäkyvästä rajapinnasta tai kokonaan. Pragmat (so. kääntäjän toimintaohjeet) ovat sekä määritelty että käytössä saman mekanismin kautta.

• Oliopohjainen ohjelmointi

Pakkaus voi toimia luokkana. Dynaaminen moniperintä ja virtuaalimetodit on mahdollista suoraviivaisella tavalla ilman suurempia lisäyksiä syntaksiin. Tiedostokahvoja voidaan käsitellä nyt objekteina.

• Upotettava ja laajennettava

Nyt Perliä voidaan helposti upottaa C- tai C ++ -ohjelmiin, sekä kutsua tai tulla kutsutuiksi ohjelmistasi hyvin dokumentoidun käyttöliittymän kautta. XS -esiprosessori on mukana, jotta voisit helposti liimata tekemäsi C- tai C ++ -rutiinit Perliin. Perl tukee dynaamista moduulien latausta, ja Perlistä itsestään voidaan tehdä dynaaminen kirjasto.

POSIX -vastaava

Suurempi uusi moduuli on POSIX -moduuli, joka tarjoaa pääsyn kaikkiin saatavilla oleviin POSIX -rutiineihin ja määrittelyihin, myös objektiluokkien kautta sopivissa tapauksissa.

• Pakettien rakentajat ja purkajat

Uudet BEGIN - ja END -lohkot mahdollistavat ohjelman kontrollin haltuunottamisen paketin käännösvaiheessa sekä ohjelman suorittamisen loputtua. Yksinkertaisemmassa tapauksessa BEGIN ja END toimivat kuten awk:issa, kun käytät valitsimia −p tai −n.

• Monta samanaikaista DBM -toteutusta

Perlillä tehty ohjelma voi nyt käsitellä DBM -, NDBM -, SDBM -, GDBM - sekä Berkeley DB -tietokantoja samasta skriptistä samanaikaisesti. Itse asiassa vanhaa dbmopen-rajapintaa on tehty yleiskäyttöisemmäksi siten, että mikä tahansa muuttuja voidaan sitoa objektiluokkaan, mikä määrittelee sen käyttörajapinnan.

• Aliohjelman määrittelyt voidaan ladata automaattisesti

Oikeastaan mekamismi AUTOLOAD sallii mielivaltaisen semantiikan määrittelyn määrittelemättömille aliohjelmakutsuille. Sitä voi käyttää muuhunkin kuin vain automaattiseen lataamiseen.

• Laajennoksia säännöllisiin lausekkeisiin

Nyt voit määritellä kvantisaattoreita, jotka eivät vastaa merkkejä niin pitkälle kuin mahdollista (non-greedy quantifiers). Voit myös ryhmitellä kvantisaattoreita ilman, että ne luovat takautuvia viitteitä. Säännöllisiin lausekkeisiin voidaan lisätä lukemista selkeyttäviä välilyöntejä ja kommentteja. Johdonmukainen laajennettavuusmekanismi lisättiin säännöllisiin lausekkeisiin, jotta saavutettaisiin ylöspäin yhteensopivuus vanhoihin säännöllisiin lausekkeisiin.

• Lukematon määrä lisämoduuleja

The Comprehensive Perl Archive Network (CPAN), joka on kuvattu man-sivulla perlmodlib sisältää satoja plug-and-play moduuleita, täynnä uudelleenkäytettävää koodia. Katso http://www.perl.com/ CPAN löytääksesi ftp-palvelimen läheltä itseäsi.

• Käännettävyys

Toimiva Perlistä C:hen -kääntäjä on jo olemassa, joskaan se ei ole vielä sovelias tuotantokäyttöön. Se luo portattavaa byte-koodia, yksinkertaista C:tä tai optimoitua C-koodia.

Noih, yllä oli varmaan riittävästi hypeä...

YMPÄRISTÖMUUTTUJAT

Katso man-sivu perlrun.

TEKIJÄ

Larry Wall <larry [AT] wall.org>, jossain määrin muilta saatujen vinkkien avittamana.

Jos omat Perl-menestystarinasi tai todistuksesi voivat auttaa muita edistämään Perlin mainetta sovellusten kehittämisessä (tai jos vain haluat yksinkertaisesti ilmaista kiitollisuutesi Larrylle ja muille Perlin tekijöille), ole hyvä ja lähetä sähköpostia osoitteeseen <perl-thanks [AT] perl.org>.

TIEDOSTOT

 "/tmp/perl-e$$"        Väliaikaistiedostot valitsimella -e
                        ajetuille  komennoille


 "@INC"                 Perl-kirjastojen hakupolut

DIAGNOSTIIKKA

Valitsin −w kertoo kaikkea kivaa diagnostiikkaa.

Man-sivulta perldiag saat kattavan dokumentaation Perl-diagnostiikasta.

Käännösvirheet kertovat millä rivillä virhe on, kuin myös seuraavan tokenin tai token-tyypin, joka olisi tutkittu seuraavaksi (Jos skripti välitettiin Perlille valitsimen −e kautta, jokainen −e lasketaan yhdeksi riviksi).

Setuid-skriptit käsittävät lisärajoituksia, jotka voivat aiheuttaa virheviestejä tyyliin "Insecure dependency". Ks. man-sivu perlsec.

Sanoimmeko jo, että sinun pitäisi ehdottomasti harkita -w valitsimen käyttöönotttoa?

BUGIT

Valitsin −w ei ole pakollinen

Perl on täysin tietokonearkkitehtuuristasi johtuvien määrityksien armoilla, mitä tulee erilaisiin operaatiohin, kuten tyyppimuunnoksiin, atof() sekä liukulukutulostukseen funktiolla sprintf().

Jos vakiotulosteesi vaatii haun (seek) tai tiedoston lopetusmerkin (EOF) lukemisen ja kirjoittamisen välillä, niin Perl vaatii myös ( tämä ei päde funktioihin sysread() ja syswrite()).

Vaikka millään sisäänrakennetulla tietotyypillä ei ole mitään mielivaltaisia kokorajoituksia (poislukien muistin määrä), joitain mielivaltaisia rajoituksia kuitenkin on: muuttujan nimi ei saa olla pidempi kuin 255 merkkiä, eikä mikään polun (PATH) komponentti saa olla pidempi kuin 255 merkkiä, jos käytät valitsinta -S. Säännöllinen lauseke ei saa olla käännöksen jälkeen sisäisesti suurempi kuin 32767 tavua.

Bugiraportit voi lähettää osoitteeseen (huomaa sisällyttää mukaan täysi konfigurointi-informaatio siten kuin perl-lähdekoodipaketin mukana tuleva myconfig-ohjelma tulostaa, tai perl -V) <perlbug [AT] perl.com>. Jos onnistuit kääntämään perlin, voit käyttää apunasi utils/ -alihakemiston alla olevaa perlbug-ohjelmaa bugiraportin lähettämisessä sähköpostitse.

Perl tulee oikeasti sanoista Pathologically Eclectic Rubbish Lister, mutta älä kerro kenellekään, että sanoin sen sinulle.

MERKINNÄT

Perlin motto kuuluu "Tapoja on olemassa enemmän kuin yksi" ("There’s More Than One Way To Do It", TMTOWTDI). Näiden tapojen lukumäärän selvittäminen jätetään lukijalle harjoitustehtäväksi.

Kolme tärkeintä ohjelmoijan lahjakkuutta ovat Laiskuus, Kärsimättömyys ja Kunnianhimo. Katso Kamelikirjasta miksi.