trinita: Problem: Element soll nur in Liste, wenn nicht bereits drin

Beitrag lesen

Hallo Forum !

Ich möchte mit PERL einer Liste ein Element hinzufügen, aber nur dann, wenn nicht bereits ein gleichartiges Element enthalten ist. Dafür brauche ich etwas ähnliches wie die inarray()-Funktion von php. Wie löse ich das am kürzesten ?

Bisher sieht das bei mir so aus:

@types ist die Zielliste. Das neue Element ist $type.

Ich generiere also zunächst eine Liste @tempList, die alle Elemente aus @types enthält, die gleichartig mit $type sind:

my @tempList = grep($_ eq $type, @types);

Dann füge ich $type der Liste @types hinzu, aber nur, wenn die temporäre Liste @tempList leer ist:

push(@types, $type) if($#tempList == -1);

Ich würde das gerne in eine Zeile zusammenfassen. Habe schon mal folgendes ausprobiert:

push(@types, $type) if($#{ grep($_ eq $type, @types) } == -1);

Das funktioniert aber leider nicht (Warum ?).

Danke für die Hilfe,
Trinita