MrSpoocy: Array in anonymen Hash über die Referenz löschen ?

Beitrag lesen

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();