linux-l: Perl und Files

Ulrich Wiederhold mogli at bluesky.netcologne.de
Fr Jun 2 22:16:32 CEST 2000


Hallo,
Problem leider noch nicht gelöst!

On Fri, Jun 02, 2000 at 08:28:24PM +0200, Jens Dreger wrote:
> On Fri, Jun 02, 2000 at 07:41:14PM +0200, Ulrich Wiederhold wrote:
> > Hallo,
> > ich verzweifele mal wieder, und bevor ich mir die Kugel gebe und dick
> > und fett werde, frage ich doch mal lieber hier nach. Ich bin mir sicher,
> > daß hier jemand eine Antwort weiß und vielleicht ist dieser jemand so
> > nett, sie mir zukommen zu lassen...
> > 
> > Problem: Ich möchte eine Datei einlesen, die erste Zeile in einer
> > Variable auslesen und in der Datei löschen, die Datei wieder speichern.
> > 
> > Meine (XXXXXXX-VXXXX.) Versuch sieht wie folgt aus:
> > 
> > 	open (FILE, "+<$file");
> > 	@allines = <FILE>;
> > 	$firstline = shift(@allqueues);
> > 	print FILE "@allines";
> > 	close(FILE);
> > 
> > *******************************************
> 
> Da Du $firstline nicht verwendest, schlage ich mal vor:
Ich verwende $firstline, wollte ich Euch nur ersparen!

> > Die $firstline wird auch richtig bestimmt, die Datei müßte mit "+<" zum
> > Schreiben und Lesen geöffnet sein und "shift(ARRAY)" "entnimmt dem
> > Vektor den ersten Wert, gibt diesen zurück, kürzt den Vektor um ein
> > Element und verschiebt alles nach unten". (aus Programmieren in Perl)
> > 
> > Anstatt die Datei zu überschreiben, wird der Rest der Datei (ohne Zeile
> > 1) hinten drangehängt.
> 
> Naja, nachdem Du die Datei eingelesen hast, befindet sich der Zeiger
> fuer die aktuelle Position innerhalb der Datei natuerlich am
> Ende. Benutze seek (man perlfunc) oder schliess die Datei wieder, und
> oeffne sie dann nochmal. 

ok, das funktioniert, mit "seek(FILE,0,0)", obwohl ich den unterschied
zwischen POSITION und WHENCE selbst auf Deutsch nicht verstanden habe!
> 
> Normalerweise wuerde man wohl eher die Datei einlesen, dann
> umbenennen, dann neue Datei schreiben und bei Erfolg umbenannte
> loeschen, sonst wieder zurueckumbenennen.

Umbenennen klappt, aber wie kann ich eine ganze Datei löschen?
Kann ich normale Shell-Befehle verwenden, also z.B. rm? Wie?
Habe das bisher nur mittels $a = 'Befehl' benutzt, nicht ohne Variable
vorneweg!

Gruß
Uli




Mehr Informationen über die Mailingliste linux-l