package SortHash; #Kludge to get options sorted. use Tie::Hash; use vars qw(@ISA); @ISA = qw( Tie::StdHash ); sub FIRSTKEY { my $self = shift; @{ $self->{_SORTHASH_KEYS} } = sort {$self->{$a} cmp $self->{$b} } grep { $_ ne '_SORTHASH_KEYS' } keys %{$self}; return shift @{ $self->{_SORTHASH_KEYS} }; } sub NEXTKEY { my $self = shift; return shift @{ $self->{_SORTHASH_KEYS} }; } package main; use CGI qw(:standard); my %list; tie %list, 'SortHash' ; # tied hash with sorted keys by value... print start_form; print popup_menu(-name=>'option' , labels=> \%list, -values=> [ keys %list ] ); print end_form;