linux-l: perl und regexpr
Jens Dreger
jens.dreger at physik.fu-berlin.de
Mi Jan 17 17:40:24 CET 2001
On Wed, Jan 17, 2001 at 04:55:28PM +0100, Ulrich Wiederhold wrote:
> Hallo,
> nach einem Neustart hat alles wieder funktioniert!
> Ich hasse sowas!
> :(
Jaja. Und Du hast _nichts_ angefasst... ;)
> Wenn ich Euch vielleicht noch ein kleines Problem anbieten könnte....
> Es soll die erste Zeile einer Datei gelöscht werden. Ich mache das
> bisher so:
> ...
> open(FILE, "<$location");
> @getfile = <FILE>;
> close(FILE);
> splice(@getfile,0,1);
> `rm $location`;
> open(DEL, ">$location");
> print DEL "@getfile";
> close(DEL);
> ...
Uhm. Well...
Also, man koennte natuerlich auch einfach schreiben:
open(FILE, "<$location");
open( DEL, ">$location.new");
while(<FILE>) {
next unless($.-1);
print DEL;
}
close(FILE);
close( DEL);
rename "$location.new", "$location";
Zeilenweise ist im allgemeinen besser... Statt 'rm' kannst Du auch mal
unlink versuchen, das ist dann build-in und startet keine neue shell.
> Das führt nur dummerweise dazu, daß immer zu Begin jeder Zeil
> "whitespace"-Character eingefügt werden, sodaß ein Teil der vorherigen
> regexpr. erst nötig wird.
>
> Woran liegt das?
Das ist doch mal eine nette Frage ;)
Ich gebe Dir mal eine Perl-Zeile als Tipp:
dreger at smart:..hdb3/dreger> perl -le 'print @F=(1,2,3); print "@F";'
123
1 2 3
Na? Idee?
> Ob immer genau 1 whitespace eingefügt wird, weiß ich nicht.
Abgesehen davon, dass man sowas testen kann lautet die Antwort: ja.
Gruss,
Jens.
Mehr Informationen über die Mailingliste linux-l