Hier had uw advertentie kunnen staan :).
Dat hebben we al eens behandeld en de conclusie was dat dit eigenlijk niet mogelijk was.
Wat je wel kan doen, is gewoon de eerste regel uitlezen en vervolgens printen. Ongetestte code:
Denk er trouwens aan dat op deze manier, zodra je naar je bestand schrijft, je waarschijnlijk alle data die er na komt kwijt bent (hoewel ik dat niet 100% zeker weet). In ieder geval is het onmogelijk om de bestaande data 'op te schuiven'. Als dat de bedoeling is, zul je het hele bestand opnieuw moeten schrijven (en dus waarschijnlijk eerst in moeten lezen).
Dat is wel eenvoudig natuurlijk:
Wat je wel kan doen, is gewoon de eerste regel uitlezen en vervolgens printen. Ongetestte code:
code:
1
2
3
4
| open(FILE,"+<bla"); # openen met read+write access <FILE>; # eerste regel inlezen print "Regel 2\n"; # tweede regel schrijven close(FILE); |
Denk er trouwens aan dat op deze manier, zodra je naar je bestand schrijft, je waarschijnlijk alle data die er na komt kwijt bent (hoewel ik dat niet 100% zeker weet). In ieder geval is het onmogelijk om de bestaande data 'op te schuiven'. Als dat de bedoeling is, zul je het hele bestand opnieuw moeten schrijven (en dus waarschijnlijk eerst in moeten lezen).
Dat is wel eenvoudig natuurlijk:
code:
1
2
3
| open(FILE,"<bla"); @lines=<FILE>; close(FILE); $lines[1]="Regel 2\n"; open(FILE,">bla"); print @lines; close(FILE); |
Bedankt soultaker, 't werkt (de laatste methode dus). Alleen ipv $lines[1]="Regel 2\n";
voegt ie een regel in bij mij ipv te overschrijven.
dus:
open(FILE,"<$filename");
@regels=<FILE>;
chop(@regels);
$size=@regels;
close(FILE);
open(FILE,">$filename");
print FILE $regels[0]."\n";
$newline = 'testregel';
print FILE $newline."\n";
for ($i=1;$i<$size;$i++) {
print FILE $regels[$i]."\n";
}
close(FILE);
voegt ie een regel in bij mij ipv te overschrijven.
dus:
open(FILE,"<$filename");
@regels=<FILE>;
chop(@regels);
$size=@regels;
close(FILE);
open(FILE,">$filename");
print FILE $regels[0]."\n";
$newline = 'testregel';
print FILE $newline."\n";
for ($i=1;$i<$size;$i++) {
print FILE $regels[$i]."\n";
}
close(FILE);
Hier had uw advertentie kunnen staan :).
Verwijderd
never mindOp zondag 21 april 2002 20:48 schreef rjsomeone het volgende:
[..]
Mag ik ook eens een dagje weg zijn?
Maar ehm.. veel meer dan 'm bedanken kan ik niet of wel?
waz een beetje in een pissed bui.
Code tussen code tags, please!Op zondag 21 april 2002 20:47 schreef rjsomeone het volgende:
(code zonder code tags)
Het is trouwens jammer dat je nu al je regels eerst gaat choppen, om ze vervolgens weer met newline uit te printen. Dat is natuurlijk zonde van de moeite!
Je kan natuurlijk ook de eerste regel printen door 'm eraf te shiften. Dan krijg je zoiets:
code:
1
2
3
| print shift(@lines); print $nieuwe_regel.'\n'; print @lines; |
Dat scheelt een for-lus en is dus waarschijnlijk een stuk efficienter. Als het niet om de tweede regel zou gaan, zou je weer splice kunnen gebruiken.
Verder is je code prima in orde.
Pagina: 1