Hallo Perl-Lerner
*g*
Jetzt habe ich so ein einfaches Beispiel hergenommen und doch Probleme !
Perl behauptet dass die Datei geschlossen ist, obwohl ich sie unmittelbar davor öffne.
Wo liegt da mein Denkfehler ?
Erstmal solltest du, gerade wenn du anfängst, alle Perlskripte "strict" machen. D.h. use strict verwenden und sinnvollerweise noch use warnings (oder den -w Switch), dann musst du alle Variabeln mit my oder our deklarieren, das ist zwar am Anfang nervig erspart dir aber die Suche nach Tippfehlern und undefinierten Variabeln.
#!/usr/bin/perl -w
use strict;
$tc_datei = testdat.txt;
Das geht schon mal nicht, was ist
$tc_time = time();
Das müßte dann lauten:
my $tc_datei = 'testdat.txt';
my $tc_time = time();
if (-e "$tc_datei")
Hier sind die Anführungszeichen überflüssig.
{ # Datei vorhanden
open ($tc_datei_fh, "$tc_datei");
und hier solltest du trotzdem prüfen ob open funktioniert hat:
open ($tc_datei_fh, "$tc_datei") or die "Kann $tc_datei nicht öffnen, weil: $!";
und $tc_datei_fh muss mit my deklariert werden.
@tc_datei_inhalt = <$tc_datei_fh>;
Da du nur eine Zeile lesen willst, kannst du hier auch einen Skalar verwenden
close ($tc_datei_fh);
if ($tc_datei_inhalt[0] < $tc_time -120) # mehr als 120 Sekunden vergangen ?
{ # ja - Aktuelle Zeit eintragen
open ($tc_datei_fh, ">$tc_datei");
print $tc_datei_fh $tc_time;
close ($tc_datei_fh);
}
else
{ # nein - Fehlermeldung
HTML_Output(@tbereits_gesendet);
exit(1);
}}
else
{ # Datei nicht vorhanden
open ($tc_datei_fh, ">$tc_datei");
print $tc_datei_fh $tc_time; # <<< hier Fehler (line 223)
close ($tc_datei_fh);
}
So könnte das aussehen:
#!/usr/bin/perl -w
use strict;
my $tc_datei = 'testdat.txt';
my $tc_time = time();
if (-e $tc_datei)
{ # Datei vorhanden
open (my $tc_datei_fh, $tc_datei) or die "Kann Datei $tc_datei nicht öffnen, weil: $!";
my $tc_datei_inhalt = <$tc_datei_fh>;
close ($tc_datei_fh);
if ($tc_datei_inhalt < $tc_time -120) # mehr als 120 Sekunden vergangen ?
{ # ja - Aktuelle Zeit eintragen
open (my $tc_datei_fh, ">$tc_datei") or die "Kann Datei $tc_datei nicht öffnen, weil: $!";
print $tc_datei_fh $tc_time;
close ($tc_datei_fh);
}
else
{ # nein - Fehlermeldung
HTML_Output(@tbereits_gesendet);
exit(1);
}
}
else
{ # Datei nicht vorhanden
open (my $tc_datei_fh, ">$tc_datei")or die "Kann Datei $tc_datei nicht öffnen, weil: $!";
print $tc_datei_fh $tc_time; # <<< hier Fehler (line 223)
close ($tc_datei_fh);
}
Struppi.
Javascript ist toll (Perl auch!)