Thread Innerhalb Hash Def auf Keys zugreifen (42 answers)
Opened by bianca at 2013-09-08 06:08

payx
 2013-09-09 10:04
#170019 #170019
User since
2006-05-04
564 Artikel
BenutzerIn

user image
Hallo,

hier mal ein Vorschlag mit "die Formate wissen ...":
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
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

my %test = (
    formate => {
            'plain ANSI', => [qw(Var1 Var3)],
            'plain UTF' => [qw(Var2 Var3)]
    },
    variablen => {
            'Var1' => sub {
                'foo1'; # natürlich wird hier viel viel mehr gemacht
            },
            'Var2' => sub {
                'foo2';
            },
            'Var3' => sub {
                'foo3';
            }
    }
);

for my $format (sort keys %{$test{formate}}) {
    for my $var (@{$test{formate}->{$format}}) {
        print "$format fuehrt $var aus: ". $test{variablen}->{$var}()."\n";
    }
}

Das ist schon deutlich übersichtlicher, als Dein (biancas) Ansatz, oder?

Aber auch der umgekehrte Weg ist mit einfacheren Strukturen möglich:

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
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;

my %test = (
    formate => {
            'pa' => 'plain ANSI',
            'pu' => 'plain UTF'
    },
    variablen => {
        'Var1' => {
            formate => {
                'pa' => 1,
                'pu' => 0
            },
            code => sub {
                'foo1'; # natürlich wird hier viel viel mehr gemacht
            },
        },
        'Var2' => {
            formate => {
                'pa' => 0,
                'pu' => 1
            },
            code => sub {
                'foo2';
            },
        },
        'Var3' => {
            formate => {
                'pa' => 1,
                'pu' => 1
            },
            code => sub {
                'foo3';
            },
        }
    }
);

for my $format (sort keys %{$test{formate}}) {
    for my $var (sort keys %{$test{variablen}}) {
        print "$format fuehrt $var aus: " . $test{variablen}->{$var}->{code}() . "\n" if $test{variablen}->{$var}->{formate}->{$format};
    }
}


HTH
Grüße
payx

Editiert von payx: typo (führt mit h)
Last edited: 2013-09-09 10:08:45 +0200 (CEST)

View full thread Innerhalb Hash Def auf Keys zugreifen