/
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/hstrip
(1714B)
#!/usr/bin/perl -w # This script cleans up an HTML document use strict; use HTML::Parser (); # configure these values my @ignore_attr = qw(bgcolor background color face style link alink vlink text onblur onchange onclick ondblclick onfocus onkeydown onkeyup onload onmousedown onmousemove onmouseout onmouseover onmouseup onreset onselect onunload ); my @ignore_tags = qw(font big small b i); my @ignore_elements = qw(script style); # make it easier to look up attributes my %ignore_attr = map { $_ => 1} @ignore_attr; sub tag { my($pos, $text) = @_; if (@$pos >= 4) { # kill some attributes my($k_offset, $k_len, $v_offset, $v_len) = @{$pos}[-4 .. -1]; my $next_attr = $v_offset ? $v_offset + $v_len : $k_offset + $k_len; my $edited; while (@$pos >= 4) { ($k_offset, $k_len, $v_offset, $v_len) = splice @$pos, -4; if ($ignore_attr{lc substr($text, $k_offset, $k_len)}) { substr($text, $k_offset, $next_attr - $k_offset) = ""; $edited++; } $next_attr = $k_offset; } # if we killed all attributed, kill any extra whitespace too $text =~ s/^(<\w+)\s+>$/$1>/ if $edited; } print $text; } sub decl { my $type = shift; print shift if $type eq "doctype"; } sub text { print shift; } HTML::Parser->new(api_version => 3, start_h => [\&tag, "tokenpos, text"], process_h => ["", ""], comment_h => ["", ""], declaration_h => [\&decl, "tagname, text"], default_h => [\&text, "text"], ignore_tags => \@ignore_tags, ignore_elements => \@ignore_elements, ) ->parse_file(shift) || die "Can't open file: $!\n";
Save
cmd:
run