Hallo Lorenz,
Hallo
beim durchstöbern von qelltexten bin ich auf folgendes gestoßen:
open (ID , "<id.txt" );
&LockFile(ID) ;
[...]
close (ID) ;sub LockFile
{
»» local(*DATEI=@_) ;
»» if ($lock==1)
»» {
flock(DATEI,2);
»» }
}
hierduch soll der gemeinsamme zugriff auf id.txt verhindert werden.
ABER was bewirkt local und flock genau ????
wäre nett wenn mir das einer erklären könnte, oder mir ne page sagen könnt, auf der ich das nachlesen könnt.
flock:
< http://www.worldmusic.de/perl/dclpc-faq.html>
"Wie kann ich Dateien vor mehrfachen Zugriff schuetzen ?"
local => dynamisches scoping.
Variablen, die mit local deklariert werden, erhalten innerhalb des umschliessenden Blockes einen lokalen Wert, bleiben aber global. Wird der Block verlassen, wird der alte Wert wieder hergestellt. Haeufig will man lieber "my" (lokale Variable) verwenden.
perldoc -f my
Eine Anwendung fuer local ist z.B., der sog. slurp-mode:
Will man den Inhalt einer Datei, in einen String einlesen und nicht wie ueblich in ein Array, so kann man dies so tun:
#!/usr/bin/perl -w
use strict;
open DAT, '<file.txt' or die "$!";
my $lines = do {lokal $/,<DAT>};
die globale Variable $/ (Input Record Seperator), wird lokal mit undef ueberschrieben, nach verlassen des do-Blockes erhaelt $/ den alten Wert zurueck.
close DAT;
Danke
Lorenz
Gruss
Kai