Provided by:
manpages-fi_0.2-2_all 
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@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.