Thread Variabler Variablenname durch Referenz (2 answers)
Opened by bianca at 2012-08-17 13:46

bianca
 2012-08-17 13:46
#161118 #161118
User since
2009-09-13
6977 Artikel
BenutzerIn

user image
Hallo!
Ich muss manchmal über einen, manchmal über zwei große Hash Strukturen iterieren mit einer Menge Code in der Schleife.
Der eine Hash ist eine Referenz, der andere eine lokale Variable. Die Referenz ist manchmal nicht vorhanden.
Nun dachte ich, klatsche ich ganz oben drüber eine zweite Schleife und verwende quasi variable Variablennamen über Referenzen?
Folgender Code funktioniert.
Möchte euch um Bestätigung bitten, dass ich hiermit wirklich nur Referenzen erzeuge und nicht zig mal den Code intern kopiere (Performance und Speicherverbrauch) und dass das eine annehmbare Vorgehensweise für meine Anforderung ist, die darin besteht, den Code der inneren Schleife für die Bearbeitung des Hash nur einmal zu schreiben (im Beispiel symbolisiert durch das print in 24).
Danke
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
#!/usr/bin/perl
use strict;
use warnings;

my %test1 = (
    foo => 'bar',
    foo1 => 'bar1',
    foo2 => 'bar2',
);
arbeite(\%test1);
sub arbeite {
    my ($ref) = @_;
    my %test2 = (
        foo => 'bar2',
        foo1 => 'bar12',
        foo2 => 'bar22',
    );

    print "iteriere über beide flexibel:\n";
    my @referenz = (\%test2);
    push @referenz,$ref if defined $ref && $ref ne '';
    foreach my $r (@referenz) {
        foreach my $k (keys %$r) {
            print "$k = '$r->{$k}'\n";
        }
    }
}
10 print "Hallo"
20 goto 10

View full thread Variabler Variablenname durch Referenz