Chad, <snippet> sub processSelect{ my ($selectName, @selectValues, $selection) = @_; } </snippet> Here you assign element[0] of @_ to $selectName. Then you assign all remaining elements (indexes 1 through infinity) to @selectValues. @selectValues slurps up all remaining elements of @_ leaving poor little $selection to starve to death. Try this...
sub processSelect{ my ($selectName, $selection, @selectValues) = @_; } </snippet> You will have to modify all the callers of processSelect accordingly though. Kristofer --- Chad A Gard <[EMAIL PROTECTED]> wrote: > I'm having difficulty creating a popup menu. I want a select list, > like so: > > <select name="phoneLabel"> > <option value="Work">Work > <option value="Home" selected>Home > <option value="Mobile">Mobile > <option value="Pager">Pager > <option value="Home Fax">Home Fax > <option value="Work Fax">Work Fax > </select> > > > > It seems I should be able to get that by doing (simplified, of > course. > Really data is coming from a db, and I have several different select > lists): > > @phoneLabels = ('Work', 'Home', 'Mobile', 'Pager', 'Home Fax', 'Work > Fax'); > $phoneSelect = 'Home'; > > > $phoneLabelSelect = &processSelect("phoneLabel", @phoneLabels, > $phoneSelect); > > sub processSelect{ > my ($selectName, @selectValues, $selection) = @_; > my $selectList = $query->popup_menu(-name=>$selectName, > > -values=>[EMAIL PROTECTED], > > -default=>$selection); > return $selectList; > } > > print $phoneLabelSelect; > > > but, instead of what I want (above), I get: > <SELECT NAME="phoneLabel"> > <OPTION VALUE="Work">Work > <OPTION VALUE="Home">Home > <OPTION VALUE="Mobile">Mobile > <OPTION VALUE="Pager">Pager > <OPTION VALUE="Home Fax">Home Fax > <OPTION VALUE="Work Fax">Work Fax > <OPTION VALUE="Home">Home > </SELECT> > > with work (as the first option) being selected. It basically just > appends the -default value to the end of the option list. What am I > missing? What I've done seems to be in line with the cgi.pm doc: > > CREATING A POPUP MENU > ... > > -or (named parameter style)- > > print $query->popup_menu(-name=>'menu_name', > > -values=>['eenie','meenie','minie'], > -default=>'meenie', > -labels=>\%labels); > > ... > > 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 "[EMAIL PROTECTED]". > > 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. > > ... > > Help? > > > Chad A Gard > http://www.percussionadvocates.com/chad > > > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > ===== -----BEGIN GEEK CODE BLOCK----- Version: 3.12 GIT d s+:++ a C++ UL++ US+ P+++ L++ W+++ w PS PE t++ b+ G e r+++ z++++ ------END GEEK CODE BLOCK------ __________________________________ Do you Yahoo!? SBC Yahoo! DSL - Now only $29.95 per month! http://sbc.yahoo.com -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]