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

geloescht
 2012-06-24 10:59
#159329 #159329
User since
2012-06-19
141 Artikel
BenutzerIn
[default_avatar]
Hi topeg

Danke für deine ausführliche Anleitung! Die wesentliche Änderung ist, daß eine Datei sowohl zum Lesen wie auch zum Schreiben geöffnet werden kann. Ich hab mir ne Liste mit den Open-Möglichkeiten ausgedruckt. Deine Variante "+<" ist die Richtige. Die andere Variante "+>" löscht den bisherigen Inhalt - was im diesem Fall contraproduktiv wäre.

Hier der Code ohne Fehlerabfang (muss ich noch machen):

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#############################################
# File-Name-Generator (FNG) / Dateinamenbau #
#############################################

open(FILECOUNTER, "+<coresys/counter.csv");
flock(FILECOUNTER, LOCK_EX);
my $oldcounter = <FILECOUNTER>;
my $newcounter = $oldcounter+1;
seek(FILECOUNTER, 0, 0 );
print FILECOUNTER $newcounter;
close(FILECOUNTER);


Bei deinem Beispiel "more" öffnest, schließt, öffnest und schließt du.
Zwischendurch könnte ein andere Client den Zählerwert auslesen und man hätte, wenn's dumm läuft, zwei Dateien mit gleicher Bezeichnung. Bei dem Code oben wird geöffnet, ausgelesen und zurückgeschrieben. Dann erst geschlossen. Und solange mit SH offen ist, kann auch kein andere was auslesen. Laut Voreinstellung müsste das Perlskript, welches von einem 2. User gestartet wird, solange warten, bis User 1 seine Aktion beendet hat.

Gruß HP-User

PS:Seek kannte ich in Perl noch nicht. Das man heute auf Filehandles verzichtet, bzw FH benutz wußte ich auch nicht. Trotzdem finde ich persönlich diese "alte" schreibweise von Perl schöner/übersichtlicher.
Last edited: 2012-06-24 11:40:19 +0200 (CEST)
Past brought us "SYS 64738". Present brought us "ctrl+alt+del". But what will future bring?

View full thread open-Anweisung