Gå til innhold

Anbefalte innlegg

Hei, skal skrive kort hvordan man håndterer filer for lesing og skriving!

 

Funksjonen "open" brukes til det, se følgende enkle kodesnutt:

 

#!/usr/bin/perl

# åpner en fil, 'testfil.txt' for skriving:
open(FILE,">testfil.txt");

# legg merke til krokodille-symbolet, som ellers ofte angir at output skal sendes til
# en fil, både i linux og windows, eks på kommandolinje: echo "test" > enfil.txt, vil
# lage fila enfil.txt som inneholder "test"

# FILE er nå en såkallt "file handle" (brukes i mange skriptespråk
# file handles må ikke være i store bokstaver, men dette er vanlig praksis.

print FILE "Denne teksten vil havne i fila fordi vi putter FILE etter print kommandoen.\n";

print "Dette kommer ikke i fila :)\n";

print FILE "Flere tekst strenger ","kan separeres med komma ","når de print'es\n";

print FILE "avslutter her!\n";

# ved slutten av perl-skriptet lukkes alle file handles, men det er god
# programmeringsskikk å gjøre det manuelt. Hvis du siden i samme skript 
# vil lese fra fila, så må file-handlen være lukket.
close FILE;

 

For å lese en fil, gjør man nesten det samme, men nå tar vi ikke med krokodilel tegnet.

 

#!/usr/bin/perl

open(FILE,"testfil.txt");

# for å lese en linje fra fila, brukes readline operator, <>

$line = <FILE>;

print "Første linje av fila innehold dette:\n";
print $line;

# <> operatoren vil lese neste linje hver gang den kalles, helt
# til du har gått gjennom hele fila, det gjøres ofte slik:

print "\nHer kommer resten av fila!\n\n

while($line = <FILE>){
 print $line;
}

# while vil kjøre gjennom hele fila helt til EOF (end of file) som evalueres 
# til "usann" og dermed hopper den ut av while-løkka.

# rydder opp etter oss :)
close FILE;

 

merk at open(FILE,"filnavn") er det samme som open(FILE,"<filnavn");

 

< = lese fra fil.

> = skrive til fil.

Endret av Torbjørn
Lenke til kommentar
Videoannonse
Annonse

Bra tutorial. På tide at det kom noe slikt igrunn :roll:

 

Ett spørsmål;

Hvordan blir koden hvis jeg vil skrive noe bestemt til en fil?

Må jo ha med <STDIN> og greier...

 

Kan det bli noe slikt?

#!/usr/bin/perl

open(FILE,">testfil.txt");
print "Hva vil du skrive i fila?\n";
$skrive_til_fil=<STDIN>;
chomp $skrive_til_fil;
print FILE "$skrive_til_fil";
close FILE;

Lenke til kommentar

moesen, der er riktig det du skriver, (regner med det funka hvis du prøvde)

 

som du ser, brukes <> operatoren til å lese en linja fra STDIN, akkurat som den brukes til å lese en linje fra en file handle. veldig fleksibelt mao, alt reduseres ned til et par enkle prinsipper (her: lese en linje fra whatever), en filosofi som gjennomsyrer perl og gjør det veldig fleksibelt.

Lenke til kommentar

huf: moesen brukes funksjonen "chomp".

 

chomp kapper av siste char på strengen hvis det er en linjeskift.

 

når man leser fra keyboard og trykker enter, kommer det typisk med en linjeskift som man ikke vil ha i fila (kanskje)

 

til referanse:

 

"chop" kapper av siste char uavhengig av hva det er.

Lenke til kommentar
moesen, der er riktig det du skriver, (regner med det funka hvis du prøvde)

 

som du ser, brukes <> operatoren til å lese en linja fra STDIN, akkurat som den brukes til å lese en linje fra en file handle. veldig fleksibelt mao, alt reduseres ned til et par enkle prinsipper (her: lese en linje fra whatever), en filosofi som gjennomsyrer perl og gjør det veldig fleksibelt.

Fikk nok ikke testa det, har ikke instalert noe som kan kjøre perl akkurat nå :blush:

Går jo fort å lage ett skriveprogram alà nano/pico da, ikke sant? :green:

Lenke til kommentar
  • 1 måned senere...
jeg kan skrive på oppfordring, men jeg tenker det er mer enn nok der for å fordøye inntil videre :)

 

bare å spørre i trådene om du har spørsmål - fikk du linuxmaskinen opp og kjøre på hjemmenettet?

Skal prøve FreeBSD 5.1 på den. Det var noe feil me ruter'n så jeg får ny.. Vil du hjelpe? :p

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...