/
usr
/
share
/
doc
/
perl-HTML-Parser
/
eg
/
/usr/share/doc/perl-HTML-Parser/eg
mkdir
upload
Name
Size
Mode
Actions
hanchors
1138
0644
edit
dl
rm
hdump
541
0644
edit
dl
rm
hform
1846
0644
edit
dl
rm
hlc
547
0644
edit
dl
rm
hrefsub
2782
0644
edit
dl
rm
hstrip
1714
0644
edit
dl
rm
htext
548
0644
edit
dl
rm
htextsub
788
0644
edit
dl
rm
htitle
434
0644
edit
dl
rm
Edit:
/usr/share/doc/perl-HTML-Parser/eg/hanchors
(1138B)
#!/usr/bin/perl -w # This program will print out all <a href=".."> links in a # document together with the text that goes with it. # # See also HTML::LinkExtor use HTML::Parser; my $p = HTML::Parser->new(api_version => 3, start_h => [\&a_start_handler, "self,tagname,attr"], report_tags => [qw(a img)], ); $p->parse_file(shift || die) || die $!; sub a_start_handler { my($self, $tag, $attr) = @_; return unless $tag eq "a"; return unless exists $attr->{href}; print "A $attr->{href}\n"; $self->handler(text => [], '@{dtext}' ); $self->handler(start => \&img_handler); $self->handler(end => \&a_end_handler, "self,tagname"); } sub img_handler { my($self, $tag, $attr) = @_; return unless $tag eq "img"; push(@{$self->handler("text")}, $attr->{alt} || "[IMG]"); } sub a_end_handler { my($self, $tag) = @_; my $text = join("", @{$self->handler("text")}); $text =~ s/^\s+//; $text =~ s/\s+$//; $text =~ s/\s+/ /g; print "T $text\n"; $self->handler("text", undef); $self->handler("start", \&a_start_handler); $self->handler("end", undef); }
Save
cmd:
run