webForumDet fria alternativet

Filradering...

1 svar · 405 visningar · startad av Dr.Knorr

Dr.KnorrMedlem sedan apr. 20001 inlägg
#1

Hej!

Har gjort en while-sats som går igenom en textfil med rader, och söker efter ett visst värde. När värdet har hittats i någon rad i filen, så skall raden raderas.

Har gjort while-satsen enligt nedan, och önskar få förslag på kod som kan ta bort den aktuella raden i textfilen.

open (LOGG, "$meddelande");
while ($rad=<LOGG> ){
if ($rad=~/::$kortkod::/){

===[ Här vill jag ha kod som raderar rad i fil ]===

}
}
close (LOGG);

Någon som har ett förslag till en nybörjare?

//Dr.Knorr

[Redigerat av Dr.Knorr den 26 apr 2000]

RobbanMedlem sedan dec. 19992 555 inlägg
#2

Finns två algoritmer du kan använda.

1:

Öppna filen som du har gjort. Öppna samtidigt en temporär fil för skrivning. Läs rad efter rad som du gör, och kör det reguljära uttrycket. Om värdet inte hittas skriver du den raden till den temporära filen (om värdet hittas gör du det inte). Fortsätt som vanligt och stäng sedan de bägge filerna. Nu har du en temporär fil som innehåller det du vill. Radera den gamla filen och döp om den temporära filen. Klart.

2:

I princip samma filosofi, men här läser du in hela filen i en array, raderar innehållet i filen och skriver till den direkt. Utan att gå via en temporär fil alltså. Kan bli mycket minneskrävande om det är en stor fil det handlar om, men är troligen något snabbare. Lite osäkrare än metod 1 (skulle scriptet dyka medan det körs riskerar du att hela eller delar av filen försvinner).

------------------
Robban < robban@lipogram.com >

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)