Thread Anonyme Arrays miteinander vergleichen. (8 answers)
Opened by toby at 2006-08-28 02:29

toby
 2006-08-28 02:29
#69263 #69263
User since
2006-04-14
66 Artikel
BenutzerIn
[default_avatar]
Hallo Forum! :)

ich habe wieder mal ein Problem, bei dem ich ohne Eure hilfe nicht weiterkomme :(

Gegeben ist auf der einen Seite ein Master-Array, welches als Elemente Hashes enthält, die wiederum Arrays als Values der Keys haben. Auf der anderen Seite haben wir mehrere autonome Hashes, welche Arrays als Values haben. Die Aufgabe ist es zu prüfen, ob und welcher dieser autonomen Hashes als Hash im Master-Array vorhanden ist... hört sich kompliziert an, ist aber nicht.. schaut bitte mein bisheriges Code:

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
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/perl

use strict;
use warnings;

# Master-Array
my $master = [
{ x => ['1','a'], y => [], z => ['4'], },
{ x => ['b','a'], y => ['1','a'], z => ['1'], },
{ x => ['1','a'], y => [], z => [1], },
{ x => [], y => ['a','1'], z => ['2'], },
];

# autonome Hashes
my $h1 = { x => ['1','a'] , y => [] , z => ['4'] };
my $h2 = { x => ['a'] , y => [] , z => ['1'] };
my $h3 = { x => ['1'] , y => ['a',1] , z => [2] };
my $h4 = { x => [] , y => ['a1'] , z => ['1','2'] };

my @checkit = ($h1,$h2);
my $hrefCount;

foreach my $href (@checkit){
$hrefCount++;
masterElemente($href);
printf "ende von hrefCount: %s\n",$hrefCount;
};


sub masterElemente{
my $href = shift;
for my $element (0..$#{$master}){
printf "MASTERELEMENT: %s\n",$element;
my $count=0;
my $masterKeys = keys (%{@{$master}[$element]});
foreach my $key (keys %$href){
printf "key: $key\n";
printf "\tmaster:\t@{$master->[$element]->{$key}}\n";
printf "\thref:\t@{$href->{$key}}\n";

next if ( ($href->{$key}) != ($master->[$element]->{$key}) );

printf "count=%s\n",$count;
$count++;
}
printf "\n";
printf "BINGO beim $element element (gezaehlt von 0-$#{$master})!\n" if $masterKeys eq $count;
printf "\n";
last if $masterKeys eq $count;
}
}


Alles bis auf den eigentlichen Vergleich (die Zeile mit "next if" ) funktioniert schon ganz gut, nur den eigentlichen Vergleich bekomme ich nicht hin.. Muss ich dort durch die anonymen Arrays noch durchiterieren? Wie mache ich das hier in diesem Falle? Vor lauter Bäumen sehe ich den Wald nicht mehr und hab keine Idee mehr :(

Kann mir bitte jemand helfen?
Danke ! :)
Tobias\n\n

<!--EDIT|toby|1156717917-->

View full thread Anonyme Arrays miteinander vergleichen.