folgendes Script lasse ich auf meinem neuen Linux Apache Server laufen aber ich bekomme ein ganz anderes Resultat als wenn ich es in der shell mit perl aufrufe oder auf einem Samba-Server laufen lasse. Ich habe den Eindruck dass der Code nicht linear Stück für Stück abgearbeitet wird sondern Dateien früher gespeichert werden obwohl sie erst später im Code drankommen.
Lasse ich folgendes Script auf Apache laufen erhalte ich die falsche Ausgabe "1", über die perl shell oder Sambar erhalte ich die richtige Ausgabe -1. In beiden Fällen wird die Datei richtig beschrieben.
(die "log.txt" Datei ist beim ersten Aufruf leer)
- Code: Select all
#!/usr/bin/perl
print ("Content-type: text/html\n\n");
my $q = "hallo";
my $doubleVote = -1;
my $FILE;
open $FILE, "log.txt"; # Datei ist anfangs leer !
my @lines = <$FILE>;
close ($FILE);
foreach my $pair (@lines) {
if ($pair eq $q) {
$doubleVote = 1;
}
}
if ($doubleVote == -1) {
my $FILE;
open $FILE, ">> log.txt";
print $FILE $q;
close ($FILE);
}
print $doubleVote;
# Ausgabe auf Apache für $doubleVote: 1 (falsch)
# Ausgabe auf Perl/Samba für $doubleVote: -1 (richtig)
# In beiden Fällen wurde die Datei beschrieben, nur der Wert von
# $doubleVote ist unterschiedlich.
# (Anmerkung: wird das script ein zweites mal aufgerufen ändert sich unter
# Apache der Wert nicht, unter Perl/Sambar ändert er sich korrekt auf 1
#
# interessant auch, löscht man print $FILE $q; dann stimmt $doubleVote wieder (also -1)
Woran liegt das? Was muss man wo an/aus oder umschalten?
MfG, Zippo