Thread Bestimmte array Elemente löschen
(9 answers)
Opened by falke13 at 2011-05-24 09:12 2011-05-24T07:12:51 falke13 In Perl gilt auch hier "There is more than one way to do it"{´" Da ich in Perl6-Syntax nicht fit bin nur zwei Ansätze in Perl5 (ungetestet Code (perl): (dl
)
1 2 3 4 5 6 my @lines = ...; # Ausgagsliste my %hits; # wieviele Einträge pro Land my @result = reverse # 4. zurück zur Ausgangs-Reihenfolge grep {/#(\w*)\.xml/; # 2. ländername extrahieren $hits{$1}++ <2} # 3. pro name die ersten 2 durchlassen reverse @lines; # 1. Reihenfolge umkehren Dabei bleibt die Reihenfolge erhalten, es werden nur Einträge weggeschmissen oder Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 my @lines = ...; # Ausgagsliste my %hits; foreach my $l (@lines) { $l =~ m/#(\w+)\.xml/; push @{$hits{$1}},$l; # Hash land ->[line1,line2...] }; my @result; foreach my $k (keys %hits) { if (@{$hits{$k}} > 2) { push @result,@{$hits{$k}}[-2,-1]; # letzte 2 Einträge } else { push @result,@{$hits{$k}} # alle Einträge für land } }; hier wird die Reihenfolge der Länder nicht beibehalten, dafür ist der Ansatz evtl. schneller. Last edited: 2011-05-24 13:43:44 +0200 (CEST) |