Thread %hash = $hash{$key} möglich? (3 answers)
Opened by pearl-man at 2006-02-19 16:28

pearl-man
 2006-02-19 16:28
#63091 #63091
User since
2005-07-25
65 Artikel
BenutzerIn
[default_avatar]
Habe mehrere Hashes mit gültiges Keys (Wörter) und jeweils einem Value, das entweder '0' ist oder den Namen eines weiteren Hashes (z.B. %weitere) enthält. Die Keys der Hashes bilden am Ende einen Satz. Folgender Code:

Code: (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
33
34
35
...

# die hashes:
%inst_base = (  "von MS Office XP Professional auf" => %pcs,
               "von Adobe Creative Suite auf" => %pcs_macs,
               "von Adobe GoLive auf" => %pcs_macs,
               "von MS Windows 2000 Professional auf" => %pcs);

%pcs = (    "WORTMANN PC: P4, 3Ghz, 512MB Ram" => 0,
               "Acer Aspire PC: AMD64 3200+" => 0,
               "Sony VAIO Notebook FS1" => 0,
               "Sony VAIO Notebook FS2" => 0);

%macs = (  "Apple iMac G4 700MHz" => 0,
               "Apple iMac G5 20-Zoll" => 0,
               "Apple iMac G5 17-Zoll" => 0,
               "Apple PowerMac G5 Dual 2,5GHz" => 0,
               "Apple PowerMac G5 Quad 2,5GHz" => 0,);

%pcs_macs = (%pcs, %macs);

# der code...
while ($weiter){
@temp = keys %hash;
$cur_key = $temp[rand @temp];
$satz.= " $cur_key";
if ($hash{$cur_key}){
       %hash = $hash{$cur_key};
} else {
       $weiter = 0;
}
}

print "\n$satz\n";
...


Ausgabe ist dabei aber leider folgende:

Code: (dl )
1
2
3
Odd number of elements in hash assignment at ./ber.pl line 57.

von MS Office XP Professional auf von Adobe Creative Suite auf


kurz gesagt, es hängt an folgender Zeile:

Code: (dl )
 %hash = $hash{$cur_key};


ist solch eine Zuweisung überhaupt realisierbar?

mfg

View full thread %hash = $hash{$key} möglich?