1 2 3 4
my @schraubenzieher = qw(10012 10038 10079 10081 10099); my @zange = qw(10012 10015 10079 10081); my @hammer = qw(10012 10079 10081 10088); my @duebel = qw(10038 10079 10085);
1 2 3 4 5 6 7
my @gmeinsam = abgleichen(@schraubenzieher,@zange); @gemeinsam = abgleichen(@duebel,@hammer@zange); Inhalt 1: 10012 10015 10079 10081 Inhalt 2: 10079
1 2 3 4 5 6 7 8 9
my @intersection = intersection(\@schraubenzieher, \@zange); sub intersection { my ($x, $y) = @_; my %seen; @seen{ @$x } = (1) x @$x; # schaue, was von $y schon in %seen existiert und gib nur diese # elemente zurück return grep { $seen{ $_} } @$y; }
1 2 3 4 5 6 7 8 9 10 11
# @elements_found_in_every_given_array = abgleichen( \@array1, \@array2, ... ) sub abgleichen { my %seen; for my $aRef ( @_ ) { $seen{$_}++ for @$aRef; } return grep { $seen{$_} == @_ } keys %seen; }