Thread perlfaq4 - How do I compute the difference of: three arrays? (5 answers)
Opened by pktm at 2006-07-10 20:11

Linuxer
 2006-07-10 21:12
#68026 #68026
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hi,

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/perl
use strict;
use warnings;

use vars qw( @a1 @a2 @a3 %cnt @help );

# diese arrays sollen verglichen werden
@a1 = qw/ abc def 123 456 /;
@a2 = qw/ abc 123 789 /;
@a3 = qw/ def ghi 123 000 /;


# hilfsarray, damit wir die arrays identifizieren koennen,
# ohne dass wir sym.ref. benutzen muessen
@help = (
[ @a1 ],
[ @a2 ],
[ @a3 ],
);

# fuer jeden array
for my $hh ( 0 .. $#help ) {

# fuer jedes element eines array
for my $aa ( 0 .. $#{$help[$hh]} ) {
# das vorkommen eines elements erzeugt einen key
# und als value dient ein Array, in dem der Index aus
# @help abgelegt, in dem der string gefunden wurde
$cnt{$help[$hh]->[$aa]} = [] unless ( exists($cnt{$help[$hh]->[$aa]}) );
push(@{$cnt{$help[$hh]->[$aa]}}, $hh);
}

}

# fuer jeden key
for ( keys %cnt ) {
# gib aus, welches element in welchen arrays gefunden wurde
print "'$_' found in: @{$cnt{$_}}", $/;
}

Ist allerdings nur eine spontane und schnell zusammengetippte Idee.
Inwiefern sie Sinn macht und/oder praktikabel ist, sei dahin gestellt.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread perlfaq4 - How do I compute the difference of: three arrays?