package HTML::TokeParser::Listerine;
use strict;
use warnings;
use base 'HTML::TokeParser';
sub get_tag {
my $self = shift;
if (wantarray) {
# build and return a list
my @tags;
while ( my $tag = $self->SUPER::get_tag(@_) ) { # delegate to superclass
push @tags, $tag;
}
return @tags;
}
else { return $self->SUPER::get_tag(@_) }
}
sub get_token {
my $self = shift;
if (wantarray) {
# build and return a list
my @tokens;
while ( my $token = $self->SUPER::get_token(@_) )
{ # delegate to superclass
push @tokens, $token;
}
return @tokens;
}
else { return $self->SUPER::get_token(@_) }
}
1;
__END__
=pod
=head1 NAME
HTML::TokeParser::Listerine - Context-sensitive HTML token parsing
=head1 SYNOPSIS
use HTML::TokeParser::Listerine;
my $html = q {
Bar
Foo
};
my $p = HTML::TokeParser::Listerine->new(\$html);
# magically parse html with map rather than tedious while!
# you could also use get_token to do this
my @links = map { $_->[1]->{href} } $p->get_tag('a');
print "Links are: ", join("\n", @links), "\n";
=head1 DESCRIPTION
HTML::TokeParser::Listerine overrides the C and C methods
of HTML::TokeParser to make them DWIM in a list context, for example one
provided by the C and C