#... # Datenstrom zeilenweise lesen while ( my $line = ) { # Felder auftrennen (zum Testen vereinfacht und Zeilenumbruch rausgeworfen) my ( $start, $message ) = split /::|\n/, $line; # Feld "Message" wird nur ausgegeben, wenn es NICHT in den letzten 10 Zeilen enthalten war # Zur Kontrolle geben wir auch mal die letzten 10 "Message"s aus # und auch die Nummer der aktuellen "Message" print "$start : $message | @messages\n" unless grep { $message eq $_ } @messages; # aktuelle "Message" merken push @messages, $message; # aelteste "Message" loeschen, wenn es mehr als 10 geworden sind (FIFO) shift @messages if 10 < @messages; } __DATA__ 01::Anton 02::Berta 03::Caesar 04::Berta 05::Berta 06::Caesar 07::Berta 08::Berta 09::Caesar 10::Berta 11::Berta 12::Caesar 13::Berta 14::Berta 15::Caesar 16::Berta 17::Berta 18::Caesar 19::Berta 20::Dora 21::Berta 22::Caesar 23::Berta 24::Dora 25::Berta 26::Caesar 27::Berta 28::Dora 29::Berta 30::Caesar 31::Berta 32::Dora 33::Anton