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.