Thread Hash mit Hash-Kombinationen (7 answers)
Opened by jan99 at 2015-08-31 14:55

jan99
 2015-08-31 14:55
#181948 #181948
User since
2008-09-18
439 Artikel
BenutzerIn
[default_avatar]
Moin !

ich muss nochmal auf mein Lieblingsthema mit den Hashes und Array's nach längerer Zeit zurückkommen.

Ziel soll es sein ein Hash mit folgender Struktur abzubilden....

Quote
%RibbonTabSource = ( "RBP_100" =>
(
Name => "EBL_KOO"
UID => ("RBN_1" "RBN_2" "RBN_3" "RBN_4")
PenelID => ("RBN_1" "RBN_2" "RBN_3" "RBN_4")
)
"RBP_101" =>
(
Name => "EBL_Übersicht"
UID => ("RBN_1" "RBN_23" "RBN_3" "RBN_4")
PenelID => ("RBN_1" "RBN_52" "RBN_3" "RBN_4")
) )
)


(Fehler in der Klammerbezeichnung sind unbeabsichtigt!)

Nun habe ich bisher folgenden Code:
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
my $flag_RibbonTabSource = 0;
my $flag_RibbonPanelSource = 0;
my $Ribbon_Name = '';
my $Ribbon_UID = '';
my $Ribbon_SourceRef_UID = '';
my $Ribbon_SourceRef_PanelID = '';
my @RibbonPanelSourceReference_UID = ();
my @RibbonPanelSourceReference_PenelID = ();

my %RibbonTabSource=();
my %RibbonPanelSource=();

# dann werden in einer Schleife Werte ausgelesen und entsprechend den nachfolgenden Variablen zugewiesen.

...
    $Ribbon_SourceRef_UID = get_xml_tag_subvalue_string($_,"UID");
    push(@RibbonPanelSourceReference_UID, $Ribbon_SourceRef_UID);
    $Ribbon_SourceRef_PanelID = get_xml_tag_subvalue_string($_,"PanelID");
    push(@RibbonPanelSourceReference_PenelID, $Ribbon_SourceRef_PanelID);
    
# dann möchte ich den Hashes zusammenbauen ...

   if (!defined($RibbonTabSource{$Ribbon_UID})){
         # einbinden der zugehörigen Tabs
         my %tmp_TabSource = ();
           $tmp_TabSource{'Name'} = $Ribbon_Name;
           $tmp_TabSource{'UID'} = @RibbonPanelSourceReference_UID;
           $tmp_TabSource{'PenelID'} = @RibbonPanelSourceReference_PenelID;
                 $RibbonTabSource{$Ribbon_UID}=%tmp_TabSource;
                     } else {
         print "*** RibbonTabSource - ".$Ribbon_UID." mehrfach !!!!\n";
         }


Wenn das alles durchgelaufen ist, dann sollen Werte aufgelistet werden...

Code (perl): (dl )
1
2
3
4
5
6
print "--- RibbonTabSource ---\n";
for my $index (sort keys %RibbonTabSource){
  my %data = $RibbonTabSource{$index}; # das ist Zeile 163
  print $index."\n";
  print $index." - ".$data{'Name'}."\n";
}


Wenn ich das Skript ausführe bekomme ich folgende Meldung:

Quote
Odd number of elements in hash assignment at cuixRibbonReader.pl line 163.
RBN_0111
Use of uninitialized value in concatenation (.) or string at cuixRibbonReader.pl
line 165.
RBN_0111 -


Kann mir einer weiterhelfen wo ich meinen Bock geschossen habe?

Gruß Jan
Last edited: 2015-08-31 22:53:49 +0200 (CEST)
perl-Greenhorn - Win7 64bit / strawberry (ehem. activeperl) - www.OpenStreetMap.de

View full thread Hash mit Hash-Kombinationen