Hallo,
irgendwie komme ich gerade auf keine Lösung und meine Recherche im www war bisher erfolglos ... vermutlich ist die Lösung mal wieder ganz einfach :-)
Ich möchte die Werte eines Array als Keys in einem Hash benutzen.
1
2
3
4
5
6
7
8
9
10
11
12
use strict;
use Data::Dumper;
my @keys = ('level1_1', 'level2_1', 'level3_1');
my %hash = ();
$hash{data}{@keys} = 'test';
print "Dumper: '".Dumper(\%hash)."'<br>\n";
So funktioniert das natürlich nicht, mir fällt aber gerade nichts sinnvolles mehr ein. Ziel wäre
$hash{data}{level1_1}{level2_1}{level3_1} = 'test'
Die Länge des Key-Array ist vorher nicht bekannt; evtl. ist der Hash schon (teilweise) definiert
$hash{data}{level1_2} = 'test alt'
das sollte natürlich nicht überschrieben werden.
Letztendlich soll das eine Funktion werden, die eine Hash-Struktur beschreibt bzw ergänzt und eine zweite, die das ausliest.
Einfacher wäre es natürlich
einen Key zu erzeugen
$hash{data}{join('#', @keys)} = 'test';
das passt aber leider nicht zur der Verarbeitung in anderen Bereichen.
Gruß
Hagen