in reply to How do I order a hash for use as a %label list in cgi.pm?

CREATING A POPUP MENU print $query->popup_menu('menu_name', ['eenie','meenie','minie'], 'meenie'); -or- %labels = ('eenie'=>'your first choice', 'meenie'=>'your second choice', 'minie'=>'your third choice'); print $query->popup_menu('menu_name', ['eenie','meenie','minie'], 'meenie',\%labels); -or (named parameter style)- print $query->popup_menu(-name=>'menu_name', -values=>['eenie','meenie','minie'] +, -default=>'meenie', -labels=>\%labels); popup_menu() creates a menu. 1. The required first argument is the menu's name (-name). 2. The required second argument (-values) is an array reference containing the list of menu items in the menu. You can pass the method an anonymous array, as shown in the example, or a reference to a named array, such as "\@foo". 3. The optional third parameter (-default) is the name of the default menu choice. If not specified, the first item will be the default. The values of the previous choice will be maintained across queries. 4. The optional fourth parameter (-labels) is provided for people who want to use different values for the user-visible label inside the popup menu nd the value returned to your script. It's a pointer to an asso- ciative array relating menu values to user-visible labels. If you leave this parameter blank, the menu values will be displayed by default. (You can also leave a label undefined if you want to).

Replies are listed 'Best First'.
Re: Answer: How do I order a hash for use as a %label list in cgi.pm?
by filmo (Scribe) on Mar 21, 2001 at 22:56 UTC
    Yes, thank you, I know, I read the pod too. ;)

    The problem is that when you pass -labels=>\%labels, it creates the menu in random order.

    The question is how to use this module to get an ORDERED list, not a random one. So that "Item A", "Item B", "Item C" are listed in alphabetical order versus random, which is what happens when you pass a hash of \%labels.

    -- Filmo the Klown

      The order of the hash of labels doesn't matter, because the array of values is ordered.
        Thanks, definity one of those "duh" things that seems so obvious after you hear the right answer.

        But, what if the values of the list are some unique randomly generated user id such as "9322042" and the Labels are supposed to be "Arnold", "Bob", "Clark", etc. How does one get the labels that appear in the menu to be alphabetical even thought the values are not similarly ordered.
        --
        Filmo the Klown