Struppi: ist "unlock" nicht unnötig?

Beitrag lesen

Hallo,
Ich habe mal gelesen in einer perl doku,dass man "unlock" nicht verwenden sollte,

ein close mach automatisch ein unlock

Aber es kann durchaus Fälle geben, wo ein unlock gebraucht wird, aber dann solltest du genau Wissen was du tust und was passieren kannn.

Wäre es in dem fall nicht sinnvoll,einfach immer close zu benutzen anstatt unlock?

Genau.

Hier hab ich ein beispiel:
seek (PASSWD, 0, 2);
print PASSWD "$username:$password\n";
unlock (\*PASSWD);

zwischen frage 1,wenn man hier close (PASSWD) benutzt,kann man dann seek weglassen?

Hat das was miteinander zu tun?
Das seek brauchst du doch, weil du die Datei zum lesen+schreiben öffnest. und in dem Falle musst du immer mit seek den Filezeiger setzten.

zweites beispiel:
truncate(PASSWD, 0) or error($FATAL_ERROR, "$LOCALTIME", 'REMOVE');
seek (PASSWD, 0, 0);
print PASSWD $tmp;
unlock (\*PASSWD);

und auch hier,wenn man close...anstatt unlock benutzen würde,könnte man dann auf
truncate sowie seek verzichten?

Auch das hat nichts miteinader zu tun. seek brauchst du nur wie schon oben erwähnt, bei truncate genau das Gleiche, da du die Datei erst lesen und neu beschreiben möchtest musst du sie vorher löschen, es sei denn du bist 100% sicher das der neue Inhalte größer als der alte ist.

Du könntest:

open FH, "datei" ......
flock .....
{lesen}
close

open FH ">datei"....
schreibe
close

dir das truncate und seek so sparen, aber du weißt nicht was zwischen dem 1. close und dem 2. open passiert und in CGI Anwednungen kann diese Zeit ausreichen das ein anderer Prozess die Daten einliest und damit die falschen verwendet (und es wird früher oder später passieren).

Also ist dein Variante besser und unlock kann man sich sparen.

Struppi.