in reply to popup_menu default that isn't

The attribute is 'default', not 'defaults', and its value shourd be a string, not a reference to scalar. I suspect that you want the values from %ProgramAreas as labels:

-default => $default, # -labels => [@ProgramAreas{@values}] ),
In your sort, do you mean @values = sort {$a <=> $b} keys %ProgramAreas; ? What you have looks like pseudocode, or possibly Perl6 ;-)

Update: Was wrong about labels.

After Compline,
Zaxo