Rolf Rost: Doppelte listenelemente entfernen

Beitrag lesen

hi,

Es hat geklappt, vielen Dank! Jetzt muss ich nur noch verstehen was da passiert. ;-)

Danke fürs Danke ;-)

Wie's geht? Ganz einfach: in einem hash gibt es keine doppelten Keys - und das ist der Trick.

Array mit duplikaten

@ar = qw(emil wolle wolle emil erwin erwin rolf rolf otto otto ulla otto);

array auf einen hash einlesen, nur die keys

for (@ar){ $uni{$_} = 1 };

Jedes Listenelement wird als Key mit Value=1 auf einen hash gelesen und da es nur einen Key mit gleichem Wert geben darf in einem hash fliegen die Duplikate raus (tatsächlich werden die Values überschrieben).

oder einfacher:

%uni = map{$_,1}@ar; # Tipp von Wingi

Und irgendie geht das noch einfacher, perldoc...

hash (nur die keys) ausgeben

print join "\n", sort keys %uni;

Zur Übung:
Erstelle dein Array mal neu ohne Duplikate (array leer machen oder neu definieren, Schleife bauen oder mit map - trau dich).

Viele Grüße, Rolf