Bjoern: Popup_menu mit Hash füllen

hi

ich habe folgenden hash:
  my %liste = ( 'eins' => 'numero uno',
                'zwei' => 'numero due',
                'drei' => 'numero tre');

jetzt will ich gerne mit dem cgi-modul folgenden html-string erzeugen:
  <select name="zahl">
    <option value="eins">numero uno</option>
    <option value="zwei">numero due</option>
    <option value="drei">numero tre</option>
  </select>

kann mir da jemand helfen ? ich habe es einmal versucht mit:
  print popup_menu("zahl", %liste, "", %liste);

da steht aber zweimal '%liste'. das kann ja wohl nicht ganz stimmen.
vielleicht könnt ihr mir da weiterhelfen ?

bjoern

  1. hi!

    kann mir da jemand helfen ? ich habe es einmal versucht mit:
      print popup_menu("zahl", %liste, "", %liste);
    da steht aber zweimal '%liste'. das kann ja wohl nicht ganz
    stimmen. vielleicht könnt ihr mir da weiterhelfen ?

    Also komischerweise funktioniert deine Lösung, obwohl die Hilfe des
    CGI-Moduls etwas anderes sagt. Dort steht, dass der zweite Parameter
    eine Referenz auf ein Array mit den Werten sein soll. Alle diese
    Werte sind bei dir die Schlüssel des Hashs %liste, an die du mit
    dem Kommando "keys %liste;" kommst. Daraus musst du dann nur noch
    eine Referenz auf eine Liste machen. In diesem Fall machen wir mal
    eine anonyme Referenz daraus:

    popup_menu("zahl", [keys %liste], "");

    Weiter steht in der Hilfe, dass man für die angegebenen Werte der
    Select-Box auch jeweils einen Namen angeben kann, der dann in der
    Dropdown-Liste angezeigt wird. Dazu muss man noch als weiteren
    Parameter die Referenz auf einen Hash übergeben, der für jeden
    Wert einen Namen erhält. Das ist genau das, was du in deinem Hash
    %liste gemacht hast. Der korrekte Aufruf wäre dann also:

    popup_menu("zahl", [keys %liste], "", %liste);

    bye, Frank!

    1. popup_menu("zahl", [keys %liste], "", %liste);
      bye, Frank!

      hi.

      danke. ist ja stark. so kommt das ja wirklich, wie es soll.

      bjoern