Thread doppelte Zeilen (7 answers)
Opened by gmafx at 2010-02-26 16:44

topeg
 2010-02-26 17:02
#133750 #133750
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
also nehmen wir an du hast das Array @liste dann entfernst du alle doppelten Zeilen so:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
my %uniqe=();
# durchlaufe das Array rückwärts
for my $cnt (reverse (0..$#liste))
{
  # ein String generieren der "eindeutig" ist
  my $line=join(',',@{$liste[$cnt]});
  # entferne die Zeile aus dem Array wenn sie schon einmal gefunden wurde
  splice(@liste, $cnt,1) if($uniqe{$line});
  # setze diese Zeile als gefunden;
  $uniqe{$line}++;
}


Wenn es nicht auf die Reihenfolge ankommt und man einen eindeutigen Trenner der Spalten hat kann man auch so was machen:
Code (perl): (dl )
1
2
my %unique=map{(join(',',@$_),1)}@liste;
@liste=map{[spit(',',$_)]}keys(%unique);

Das Funktioniert weil in meinem Hash alle Schlüssel (keys) eindeutig sind, setzt man den zusammengefügten String einer Zeile als Schlüssel, so werden alle doppelten entfernt. Nimmt man dann die Schlüssel und trennt die Zeile wieder auf, so bekommt man eine Liste von Arrays, die eindeutig sind.

View full thread doppelte Zeilen