Gå til innhold

Anbefalte innlegg

Skrevet (endret)

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
Videoannonse
Annonse
Skrevet

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;

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

Enig. Flott at dere endelig kom igang da, og får delt kunnskapen deres! Jeg kommer ivertfall til å nytte meg av de.

Skrevet

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.

Skrevet

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.

Skrevet
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:

  • 1 måned senere...
Skrevet

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?

Skrevet
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

Skrevet
kan nada freebsd desverre :)

*BSD er ikke langt fra en eller annen linux distro da. Samma konsoll, bare noen få ting som er forsjellige. Ports er sikkert bedre enn rpm fra red hat :p

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...