Thread open-Anweisung (22 answers)
Opened by geloescht at 2012-06-24 00:30

topeg
 2012-06-24 11:47
#159330 #159330
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Du missverstehst. Ich habe zwei Funktionen geschrieben, die jeweils Unabhängig aufgerufen werden können. Die erste Funktion Ließt den Counter nur. Die zweite ließt den alten Wert aus erhöht ihn um eins und schreibt ihn wider zurück, der geänderte Wert wird aus der Funktion zurück gegeben. Die Zweite Funktion ist eine Erweiterung der ersten. Die erste Funktion wird nicht zwingend benötigt.

Du solltest auch die Größe der Datei vor dem schreiben des neuen Wertes ändern. Bedenke das nicht zwingend nur ein Zahlenwert in der Datei stehen muss, oder der neue Wert aus irgend einem Grund weniger stellen hat. Ein löschen des alten Inhaltes ist angebracht. Das macht man mit truncate

Bei Linux z.B. muss ein Filehandle nicht zu dem Zeitpunkt freigeben werden, an dem Perl die Datei schließt. Darum ist es günstig vor dem Schließen der Datei diese wieder freizugeben (flock($fh, LOCK_UN);). Ansonsten könnte es zu Verzögerungen kommen.

Man verzichtet nicht auf formulierte Namen für Filehandle. Aber es kommt häufig vor, das man ein Filehandle erstellt und kurz darauf wieder schließt:
Code (perl): (dl )
1
2
3
open(my $fh, '<', $datei) or die "ERROR open $datei ($!)\n";
my @data=<$fh>;
close($fh);
An Stellen wie diesen ist die Konvention nützlich. Man braucht sich keinen Namen auszudenken, jeder weiß was mit "$fh" gemeint ist und dies Stelle ist schneller zu lesen.

View full thread open-Anweisung