use List::Util qw( first ); my @user_types = ( { name => 'member', numb => '037', }, { name => 'public', numb => '165', }, ); my $selected = first { $_->{name} eq $cgi->param( 'foo' ) } @user_types; $selected ||= $user_types[0]; # in case nothing is selected my $selected_numb = $selected->{numb};