Mir ist aufgefallen das beim löschen durch "splice" ja die Anzahl der Elemente kleiner wird, und somit die for (my $i .. )
nicht mehr richtig arbeiten kann, darum hier eine Bug freie Version :P
sub onFlood {
print Dumper(\$public_chat);
# Als erstes lösche alte Einträge
foreach my $key (keys %$public_chat)
{
foreach my $message (keys %{$public_chat->{$key}})
{
my @newTimes = grep {$_ > (time - $spam_seconds); } @{$public_chat->{$key}->{$message}};
if (@newTimes)
{
$public_chat->{$key}->{$message} = [@newTimes];
}
else
{
delete $public_chat->{$key}->{$message};
}
}
}
print Dumper(\$public_chat);
return 1;
}
onFlood();