Michael Schröpl: Intersection of "viel" arrays :-)

Beitrag lesen

und jetzt füllen wir den Array @aufruf (Funktionsaufruf) mit Daten

foreach $schluessell (keys %hash) {
push @aufruf, @{ $hash{$schluessell} };
}
@results = &intersect(@aufruf);

Genau so etwas muß es sein.

Die Funktion erwartet eine Parameterliste, die sie mit shift abarbeitet. Jeder Wert der Parameterliste ist dann eine Referenz auf einen Array.

*Wie* Du es schaffst, diese Liste zu versurgen, ist allerdings Deine Sache. Ich vermute, Du könntest auch den Hash als Parameter an eine weitere Funktion übergeben, welche dann das "foreach" durchführt und mit "return" die Liste der Referenzen zurückliefert.

Der Aufruf sähe dann so aus, falls diese zusätzliche Funktion z. B. "loop" hieße:
    @results = &intersect (&loop (%hash));
Das hätte den Vorteil, daß Du die temporäre Variable "@aufruf" nur innerhalb der Funktion "loop" verwendest und dort lokal deklarieren kannst, ohne die Umwelt zu beeinflussen.