Provided by: manpages-fi_0.2-2_all bug

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 riittvsti hypeä...

YMPÄRISTÖMUUTTUJAT

       Katso man-sivu perlrun.

TEKIJÄ

       Larry Wall <larry@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@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@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.