• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

problem mit schleife

MortaR

New member
hallo!

mir ist leider noch ein problem in einem meiner skripte aufgefallen, welches ich nicht verstehe...

folgenden sub habe ich:

sub members {
my @eins = param('eins');
open (MEMBERDATA, "<member.dat") or &error("Datei kann nicht geöffnet werden");
my @members = <MEMBERDATA>;
close(MEMBERDATA);

foreach my $eins(@eins) {
chomp($eins);
my $count = 0;
foreach (@members) {
my ($member, $zehn, $elf) = split(/\|/);
if ($eins =~ /$member/) {
@to_next_list = splice(@members, $count, 1);
push(@to_next_list_all, @to_next_list);
print "<br>$member wurde verschoben!\n";
}
$count++;
}
}

my $count = 0;
foreach (@members) {
my ($member, $zehn, $elf) = split(/\|/);
if (time - $zehn > $elf) {
@to_pre_list = splice(@members, $count, 1);
push(@to_pre_list_all, @to_pre_list);
print "<br>$member wurde verschoben!\n";
}
$count++;
}

open (MEMBERDATA, ">member.dat") or &error("Datei kann nicht geöffnet werden");
flock(MEMBERDATA, LOCK_EX);
print MEMBERDATA @members;
close(MEMBERDATA);
}

ich öffne eine member.dat und lösche dort alle raus, die durch param('eins') abgehakt waren (checkbox) und speichere diese anschließend im @to_next_list_all... das funzt prima, allerdings klappt die zweite schleife nicht, in der alle, die eine bestimmte zeit in der liste waren, automatisch in den @to_pre_list_all verschoben werden sollen! mir ist aufgefallen, dass wenn auf 4 leute das zeit-kriterium zutrifft, dann bearbeitet das skript 2 davon, wenn aber nur 1-3 leute zutreffen, dann macht es nur einen, mehr als 4 hatte ich noch nicht!
komischerweise wenn er von 4 leuten 2 verschoben hat, dann macht er im nächsten script-durchlauf noch einen und im dritten noch einen, ...? ich stehe da vor einem rätsel...


MortaR
 
Zurück
Oben