use strict; use warnings; use HTML::TokeParser; my $p = HTML::TokeParser->new( *DATA ); while (my $token = $p->get_tag('select')) { my $name = $token->[1]{name} ; my $option_text = ''; while (my $token2 = $p->get_tag('option', '/select')) { last if $token2->[0] eq '/select'; if ( $token2->[0] eq 'option' and $token2->[1]{selected} ) { $option_text = $p->get_trimmed_text(); last; } } print "\$name = '$name', \$option_text = '$option_text'\n"; } __DATA__