hi!
ich möchte den Inhalt zweier Arrays vergleichen, und
will die Elemente ausgegeben bekommen, die unterschiedlich
sind (sowol, vom einen als auch vom anderen).
Die Vehemenz, mit der hier die Perl-Dokumentation ignoriert wird, ist
erstaunlich... ;))
Aus der perlfaq[1]:
=== cut ===
How do I compute the difference of two arrays? How do I compute the
intersection of two arrays?
Use a hash. Here's code to do both and more. It assumes that each
element is unique in a given array:
@union = @intersection = @difference = ();
%count = ();
foreach $element (@array1, @array2) { $count{$element}++ }
foreach $element (keys %count) {
push @union, $element;
push @{ $count{$element} > 1 ? @intersection : @difference }, $element;
}
Note that this is the symmetric difference, that is, all elements in
either A or in B but not in both. Think of it as an xor operation.
=== cut ===
Mit der obigen Routine kann man noch nicht feststellen, in welchem
Array ein bestimmtes Element fehlt. Dafür hat der Algorithmus
lineare Effizienz und keine quadratische wie der, den Sven vorge-
schlagen hat... :)
bye, Frank!