Thread Experimental keys on scalar is now forbidden at.. (8 answers)
Opened by wollik at 2019-12-10 22:04

haj
 2019-12-11 19:10
#190964 #190964
User since
2015-01-07
529 Artikel
BenutzerIn

user image
Das merkwürdige an Deiner Struktur ist die Nutzung von Keys wie '%Hash1'. Als Schlüssel Deines Geräte_Hash kannst Du doch direkt die Gerätenamen verwenden (ist das die "ID"?) - und als zugehörigen Wert den Hash, der zu dem entsprechenden Gerät passt.

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
use 5.020;
use warnings;
my %Geraete_Hash = (
    'Hammer' => {
        TYPE     => 417,
        Adresse  => 'Pseudopolis Yard',
        ID       => 'Ist das der Name des Geräts?',
        Gewicht  => 500,
    },
    'Bohrer' => {
        TYPE     => 413,
        Adresse  => 'Treacle Mine Road',
        ID       => 'Black & Decker',
        Leistung => 800,
    }
);

foreach my $geraet (sort keys %Geraete_Hash) {
    say "$geraet:";
    my %geraet = %{$Geraete_Hash{$geraet}};
    foreach my $key (sort keys %geraet) {
        say "  $key = $geraet{$key}";
    }
}


Jedes Gerät im "großen" Hash kann bei Bedarf unterschiedliche Keys mitbringen. Nur wenn die Namen der allgemeingültigen Parameter mit denen eines bestimmten Typs kollidieren können, muss man da aufpassen.

Das ganze riecht natürlich nach einem Problem, dessen Lösung sich mit Perls Objektorientierung recht lesbar hinschreiben ließe. Aber das ist ein anderes Paar Schuhe.

View full thread Experimental keys on scalar is now forbidden at..