FLOSS Manuals

 English |  Español |  Français |  Italiano |  Português |  Русский |  Shqip

Komentorivin perusteet

Perl

Perl

Perl on ohjelmointikieli, jolla voidaan tehdä tehtäviä, jotka olisivat vaikeita tai hankalia komentorivillä. Perl on oletusarvoisesti mukana useimmissa GNU/Linux -jakeluversioissa. Usein Perliä käytetään kirjoittamalla tekstieditorissa tiedosto ja antamalla se sitten ohjelman perl suoritettavaksi.

Perl -skriptien nimi voi olla mitä tahansa, mutta yleensä ne loppuvat päätteeseen ".pl". Voit käyttää mitä tahansa tekstieditoria luodaksesi tämän tiedoston - Emacs, Vim, Gedit, tai mikä tahansa suosikkisi onkin. Skripti voisi näyttää tältä: 

my $a = 1 + 2;
print $a,"\n";

Tässä esimerkissä luomme muuttujan (käyttäen komentoa my) jota kutsutaan nimellä $a (dollarimerkki on Perlin tapa ilmaista muuttuja), joka tallentaa laskutoimituksen "1 + 2" tuloksen. Se käyttää funktiota print tulostamaan tuloksen, jonka pitäisi olla 3. Pilkku yhdistää kaksi tai useampia merkkijonoja. Tässä tapauksessa uusi rivi liitetään tulostetun merkkijonon loppuun. Kaikki Perl-lauseet loppuvat puolipilkkuun, vaikka ne olisivatkin eri riveillä. Jos me tallennamme tämän tiedoston nimellä eka.pl, voimme ajaa sen komentoriviltä. 

$ perl eka.pl
3

Ohjelma tulosti "3", aivan kuin odotimme. Tietenkin voimme käyttää Perliä tekemään hyödyllisempiä asioita. Voimme esimerkiksi katsoa nykyisen hakemiston kaikkia tiedostoja.

my $filename;
opendir DH, "." or die "Ei voi avata hakemistoa!";
while( $filename = readdir(DH) ){
  print $filename,"\n";
}
$ perl eka.pl
perl-skripti.perl
muu-skripti.perl
dokumentti.odt
kuva.png

Tässä käytämme funktiota opendir avaamaan hakemiston lukemista varten. "DH" on hakemistokahvasi, jolla voimme viitata avoinna olevaan hakemistoon lukemista varten. Hakemistokahvaa ei julisteta kuin muuttujaa, se luodaan vain funktiota opendir luotaessa. Siirrämme hakemistonimen tai merkkijonon (lainausmerkkien sisällä); yksi piste viittaa nykyiseen hakemistoon. Komennot or tai die käskevät Perlin lopettaa toiminta, mikäli hakemistoa ei voida avata. Lopussa oleva merkkijono kertoo Perlille mitä sen täytyy tulostaa virheviestinä.

Silmukan while sisällä, funktio readdir ottaa hakemistokahvamme ja palauttaa seuraavan tiedostonimen hakemistossa, tallentaen sen oletusmuuttujaan "$_".

Tehdäänpä jotain näillä tiedostoilla - tässä on tapa löytää kaikki hakemiston ".pl" -tiedostot.

opendir DH, "." or die "Ei voi avata hakemistoa!";
while( $_ = readdir(DH) ){
  print $_,"\n" if /.pl$/;
}

Yllä käytämme Perlin lyhyttä ilmaisua pakataksemme tulostuksen ja evaluaation yhdelle riville, sillä sekä print että if ottavat oletusmuuttujan "$_" parametrikseen, mikäli sellaista ei ole määritelty. Parametri "/.pl$/" sanoo: sovita mikä tahansa sana, jonka loppupääte on ".pl". Alla on yksinkertaisempi mutta monisanaisempi tapa valita kaikki tiedostot, joissa on merkkijono ".txt".

my $filename;
opendir DH, "." or die "Ei voi avata hakemistoa!";
while( $filename = readdir(DH) ){
  if ($filename =~ /.txt$/){
    print $filename,"\n";
  }
}

Perl käyttää aaltosulkuja ({ }) ryhmittämään ilmaisuja haarautumiin ja silmukoihin, kuten if ja while. Operaattori "=~" kertoo komennoille if, kun ".txt" ilmaantuu muuttujan tai merkkijonon loppuun. 

Voimme käyttää Perlissä myös komentorivin koodia käyttämällä funktiota system. Jos tahdomme esimerkiksi poistaa kaikki ".txt" -tiedostot, voimme käyttää seuraavaa: 

my $dir = "./";
system("rm $dir*.txt");

Yllä komento system siirtää parametrinsa komentoriville, joka suorittaa sen täsmälleen sellaisena kuin se olisi, jos kirjoittaisimme sen. Jos nyt katsomme mitä tahansa tiedostoja, jotka loppuvat ".txt", emme löydä yhtään.

system("ls *.txt");

Lisää tietoa Perlistä

Perlin verkkosivu osoitteessa http://www.perl.org sisältää vakuuttavan määrän tietoa ja dokumentaatiota Perl-kielestä.

There has been error in communication with Booktype server. Not sure right now where is the problem.

You should refresh this page.