Thread Bearbeiten von Hash werten: Stell ich mich zu doof an ?? (13 answers)
Opened by Patrick at 2004-01-22 14:22

Dubu
 2004-01-22 15:46
#79366 #79366
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=Patrick,22.01.2004, 13:22]
So funktioniert die Ausgabe
[/quote]
Nein, tut sie nicht.
Du beendest einfach die Schleife ueber $key und gibst danach noch Werte aus - somit erhaeltst du dort nur die Werte zu dem letzten Schluessel aus der Schleife.

Schau dir bitte nochmal meinen Code an, bzw. ueberlege dir erstmal, was du aenderst.

Quote
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
# Jetzt wieder ausgeben!
my $key;
# Fuer alle Keywords
  for $key (@{$params{keywords}})
  {
# erst die freien Kommentare, falls vorhanden
     if (exists $params{$key}{precomments})
     {
        print "# ", $_, "\n" for @{$params{$key}{precomments}};
     }
  }

Hier ist jetzt die Schleife ueber $key auf einmal vorbei. Zum Ende hat $key den Wert des letzten Elementes aus dem Array @{$params{keywords}}.

Quote
Code: (dl )
1
2
3
4
5
# dann die einzelnen Schluessel und Werte
  print "$key = ";
  my @vals = ();
  foreach my $val (@{$params{$key}{values}})
...

Hier benutzt du aber wieder $key. Der ist zwar definiert, aber eben immer nur auf das letzte Element von oben.

Quote
Ich versuche es nun so!

Code: (dl )
1
2
3
my $key;   
  print "$key = ";   #  zeile 181
...

Du hast $key hier gar keinen Wert zugewiesen, deshalb die Warning, dass $key nicht definiert ist. (Es ist deklariert, aber nicht definiert!)

Schreib einfach
my $key = "KEY1";
oder so, und du solltest eine Ausgabe bekommen.

View full thread Bearbeiten von Hash werten: Stell ich mich zu doof an ??