Torbjørn Skrevet 6. desember 2003 Skrevet 6. desember 2003 (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 6. desember 2003 av Torbjørn
Torbjørn Skrevet 6. desember 2003 Forfatter Skrevet 6. desember 2003 her står mere dokumentasjon om "open" funksjonen. Det finnes drøssevis av muligheter! http://www.perldoc.com/perl5.8.0/pod/func/open.html
moesen Skrevet 6. desember 2003 Skrevet 6. desember 2003 Bra tutorial. På tide at det kom noe slikt igrunn 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;
huf Skrevet 6. desember 2003 Skrevet 6. desember 2003 Bra tutorial. På tide at det kom noe slikt igrunn Enig. Flott at dere endelig kom igang da, og får delt kunnskapen deres! Jeg kommer ivertfall til å nytte meg av de.
Torbjørn Skrevet 6. desember 2003 Forfatter Skrevet 6. desember 2003 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.
Torbjørn Skrevet 6. desember 2003 Forfatter Skrevet 6. desember 2003 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.
moesen Skrevet 6. desember 2003 Skrevet 6. desember 2003 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å Går jo fort å lage ett skriveprogram alà nano/pico da, ikke sant?
moesen Skrevet 26. januar 2004 Skrevet 26. januar 2004 fant du resten? Jepp! Skal du ikke skrive flere da?
Torbjørn Skrevet 26. januar 2004 Forfatter Skrevet 26. januar 2004 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?
moesen Skrevet 26. januar 2004 Skrevet 26. januar 2004 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?
moesen Skrevet 26. januar 2004 Skrevet 26. januar 2004 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå