Torbjørn Skrevet 6. desember 2003 Del 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 Lenke til kommentar
Torbjørn Skrevet 6. desember 2003 Forfatter Del 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 Lenke til kommentar
moesen Skrevet 6. desember 2003 Del 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; Lenke til kommentar
huf Skrevet 6. desember 2003 Del 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. Lenke til kommentar
Torbjørn Skrevet 6. desember 2003 Forfatter Del 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. Lenke til kommentar
Torbjørn Skrevet 6. desember 2003 Forfatter Del 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. Lenke til kommentar
moesen Skrevet 6. desember 2003 Del 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? Lenke til kommentar
Torbjørn Skrevet 26. januar 2004 Forfatter Del Skrevet 26. januar 2004 hepp, --> til moesen Lenke til kommentar
moesen Skrevet 26. januar 2004 Del Skrevet 26. januar 2004 hepp, --> til moesen Takker Lenke til kommentar
Torbjørn Skrevet 26. januar 2004 Forfatter Del Skrevet 26. januar 2004 fant du resten? Lenke til kommentar
moesen Skrevet 26. januar 2004 Del Skrevet 26. januar 2004 fant du resten? Jepp! Skal du ikke skrive flere da? Lenke til kommentar
Torbjørn Skrevet 26. januar 2004 Forfatter Del 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? Lenke til kommentar
moesen Skrevet 26. januar 2004 Del 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? Lenke til kommentar
Torbjørn Skrevet 26. januar 2004 Forfatter Del Skrevet 26. januar 2004 kan nada freebsd desverre Lenke til kommentar
moesen Skrevet 26. januar 2004 Del 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 Lenke til kommentar
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å