sivut.web

ohjeita web-sivuston tekijälle

Tiedostonkäsittely

Seuraava ohjelma lukee tiedoston riveistä koostuvaan taulukkoon.

#!/usr/local/bin/perl

$file = '/etc/passwd';		# tiedoston nimi
open(INFO, $file);		# avaa tiedostokahvan
@lines = <INFO>;		# lukee tiedoston taulukkoon
close(INFO);			# sulkee tiedostokahvan
print @lines;			# tulostaa taulukon

Open-funktio avaa tiedoston luettavaksi. Ensimmäinen parametri on nk. tiedostokahva (filehandle) mikä sallii Perlin viitata tiedostoon vastaisuudessa. Toinen parametri on tiedostonimi. Mikäli tiedoston nimi annetaan lainausmerkeissä, se otetaan kirjaimellisesti ilman shell-laajennuksia. Täten '~/notes/todolist' ei toimi. Jos haluaa pakottaa shell-laajennukset tulee käyttää kulmassulkeita, siis <~/notes/todolist>.

Close-funktio käskee Perlin lopettaa tiedoston käsittely sulkemalla tiedostokahvan.

Open-lauseke voi myös määrittää tiedoston tulostettavaksi tai liitettäväksi yhtä hyvin kuin luettavaksi. Tätä varten liitä tiedoston nimen alkuun > tulostettavaksi ja >> liitettäväksi:

open(INFO, $file);     avaa luettavaksi
open(INFO, "<$file");  avaa luettavaksi
open(INFO, ">$file");  avaa tulostettavaksi
open(INFO, ">>$file"); avaa liitettäväksi

Mikäli halutaan kirjoittaa jotain tiedostoon, joka on jo avattuna tulostettavaksi voidaan käyttää print-funktiota erikoisparametrilla. Tulostaaksesi merkkijonon tiedostoon, jonka tiedostokahva on INFO kirjoita:

print INFO "This line goes to the file.\n";

Seuraava avaa standardin syötteen (standard input, STDIN, yleensä näppäimistö) ja yleisen tulostuksen (standard output, STDOUT, yleensä kuvarutu):

open(INFO, '-');");  avaa standard input: n 
open(INFO, '>-');"); avaa standard output: n 

Yllä olevassa esimerkissä informaatio luetaan tiedostosta. Tiedoston sisältö on tiedostokahvassa INFO ja sen lukemiseen Perl käyttää kulmasulkeita, joten lauseke:

@lines = <INFO>;

lukee tiedostokahvan ilmoittaman tiedoston sisällön taulukkoon @lines. <INFO> lukee koko tiedoston sisällön yhdellä kertaa. Jos taulukko @lines korvataan skalaarilla $lines, ainoastaan seuraava rivi luettaisiin. Molemmissa tapauksissa jokainen rivi talletetaan kokonaisena rivinvaihtomerkkeineen.

Seuraava sivu: Ohjainrakenteet.


Käyttäjien kommentit

Ei kommentteja

Lisää oma kommentti


Ari Paulin
ari.paulin@pp.htv.fi
http://www.pp.htv.fi/apaulin/