use HTML::TokeParser::Simple; my $p = HTML::TokeParser::Simple->new( $somefile ); while ( my $token = $p->get_token ) { next unless $token->is_start_tag( 'input' ) or $token->is_start_tag( 'textarea' ); my %attribute_hash = %{ $token->return_attr }; # do your thing ... }