Thread Array-Elemente sortieren/gruppieren (7 answers)
Opened by turbo at 2012-03-08 12:59

hlubenow
 2012-03-08 16:38
#156697 #156697
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
Es ist klar, daß ein XML-Modul die bessere Lösung ist.
Zur Not kann man's auch mit einer RegEx parsen.
Hier mal ein Beispiel, das aber noch viele Fehler enthalten dürfte (und auch nicht sonderlich schön ist):
Code (perl): (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
52
#!/usr/bin/perl

use warnings;
use strict;

my $a = <<HERE;
<xml>
  <knoten>
    <2>!!!</2>
    <y>15</y>
  </knoten>
  <knoten>
    <4>!!!</4>
    <y>30</y>
  </knoten>
</xml>
HERE

my @b = split("\n", $a);

my @xvals = (2, 4, 6, 8);
my @collection = ();
my $i; my $u;
for ($i=0; $i < $#b; $i++) {
    foreach $u (@xvals) {
        if ($b[$i] =~ /<$u>[^>]*<\/$u>/) {
            if ($b[$i + 1] =~ /<.+>([^>]*)<\/.+>/) {
                my $href = {$u => $1};
                push(@collection, $href);
                last;
            } else {
                die "Error: No y-line after x-line,";
           }
        }
    }
}
my %result = ();

foreach $i (@xvals) {
    foreach $u (@collection) {
        my %hash = %{$u};
        my @onehashkey = keys(%hash);
        my $key = $onehashkey[0];
        if ($key eq $i) {
            $result{$key} += $hash{$key};
        }
    }
}

foreach $i (sort(keys(%result))) {
    print "$i => $result{$i}\n";
}

View full thread Array-Elemente sortieren/gruppieren