17. august 2000 - 11:00Der er
12 kommentarer og 1 løsning
Forkert rækkefølge
Følgende kode:
if (open(GW2,\"/hotel/nvr/WWW/forsideoverskrifter.txt\")) { @a = <GW2>; close(GW2); } push(@a,\"<a\\thref=\\\"nyheder/$in{\'Filename\'}.shtml\\\">$in{\'Headline\'}</a><br><br>\\n\"); open(GW2,\">/hotel/nvr/WWW/forsideoverskrifter.txt\"); for ($i=$#a>=6?$#a-6:0; $i<=$#a; $i++) { print GW2 $a[$i]; } close(GW2);
åbner en tekstfil og tilføjeer en linie. Problemet er, at den tilføjer den nye linie nederst. Hvordan får jeg den til at tilføje den nye linie øverst i filen?
open (F, \"filnavn\"); print \"første linie i teksten(som du selv indsætter)\\n\"; print <F>; #det er da et forsøg værd ;) close F; exit;
du kan så selv vælge om du vil lave et print FILEHANDLE \"besked\" eller bare et print \"besked\", det afhænger af, om du skal skrive til en fil eller bare skrive til skærmen..
Nemlig y2k, men det fundamentale er netop, at man ikke kan indsætte noget før den første linie, uden at genskrive hele filen. Det er \"farligt\" hvis der sker en fejl undervejs. Umiddelbart vil jeg mene at det er sikrere altid at appende til filen - så er man sikker på at de andre linier ovenover er på plads og i orden - og så må man så \"slurpe\" filen ind og vise den i den anden rækkefølge. Hvad mener vores højt ærede spørger?
det er også derfor jeg valgte overwrite_file istedet for bare write_file, i og med at den er lidt mere hårdfør over for filen end den normale write_file er ;).. med hensyn til det med risikoen, så kunne man jo også prøve at sætte noget flock() på ens filehandle..
Så har jeg endelig fået tid til at kigge på det. Y2k\'s første eksempel dur for så vidt fint, MEN nu sletter den ikke de \"ældste\" linier, hvis der er flere end 7.
Det var det, der stod i:
for ($i=$#a>=6?$#a-6:0; $i<=$#a; $i++) { print GW2 $a[$i];
Så hver gang der bliver tilføjet en linie, tilføjer den alle linier een gang til!
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.