Thread Array-Element kombinieren (5 answers)
Opened by Hagen at 2010-07-14 08:53

pq
 2010-07-14 10:26
#139783 #139783
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
also wenn du damit nicht im obfuscation contest gewinnen willst, würde ich einige sachen etwas lesbarer und perliger schreiben.
c-style-for-schleifen etwa finde ich viel zu umständlich.
for my $i ($x .. $y) ist IMHO einfach schneller begreifbar.
und du wiederholst mehrmals $data{'l'.($i+1)}. da würde ich den key in eine variable zwischenspeichern oder gleich die liste zwischenspeichern.

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
use strict;
use warnings;

my %data = (
    l1 => ['x1', 'x2', 'x3'],
    l2 => ['y1', 'y2', 'y3', 'y4'],
    l3 => ['z1', 'z2', 'z3', 'z4', 'z5'],
);  
my @liste = ();

for my $i (0 .. (keys %data) - 1) {
    my $key = 'l' . ($i+1);
    my $current = $data{$key};
    print "Schleifendurchlauf '$i' ...\n";
    if ($i == 0) {
        @liste = @$current
    }
    else {
        my @list_bak = @liste;
        @liste = ();
        for my $j (0 .. $#$current) {
            push @liste, map {
                "$_-$current->[$j]"
            } @list_bak;
        }
    }
    print Dumper \@liste;
}


es gibt auch noch perldoc -q permute, was z.b. Algorithm::Permute vorstellt, aber das passt hier nicht so richtig. lohnt sich aber, sich zu merken.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread Array-Element kombinieren