Struppi: Ich kriegs nicht gebacken...mit flock

Beitrag lesen

jetzt gehts so :)

sub check
{
my $zugriff = 0;
open(DATEN,"+<$logfile") || Dead();
flock(DATEN,LOCK_EX) || die "cannot lock $!\n";
while (<DATEN>){
$zugriff++ if /$etwas geschriebenes/;
     }
     if ($zugriff)
     {
     Dead();
     }
     seek (DATEN, 0, 2);
     print DATEN "$etwas geschriebenes\n";
     close (DATEN) || die "cannot close $!\n";

}

Ich dachte mir,man könnte z.B. das script direkt sterben lassen indem man z.B.
dies schreibt "dead() if /$etwas geschriebenes/;" anstatt $zugriff++ if...
aber das geht so nicht,ansosten könnte man dann auch auf den if zweig verzichten.

Stimmt, warum geht das nicht?

Dead() if /$etwas geschriebenes/;

sollte eigentlich funktionieren (wobei ich das Gefühl hab, dass sterben zuviel ist, oder?)

Da du mich ja schon nach der 2 gefragt hast, man sollte auch hier die Konstanten aus fnctl verwenden, da die 2 nicht immer SEEK_SET sein muss.

nach dem seek in form von fnctl habe ich nur http://www.perldoc.com/perl5.8.0/pod/func/seek.html etwas gesehen von
SEEK_END aber kein offizielles beispiel wie die form in seek(TEST,0,1); ?!
Müsste dies dann in etwa so seek(TEST,0,SEEK_END); aussehen?

oh, stimmt.
ich hatte mit den Konstanten auch einige Probleme, da die nicht überall laufen (also fcntl nicht immer exportiert). aber versuchen würd cih's auf jeden Fall:

use fcntl qw/:seek :flock/;

Struppi.