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
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
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