#!/usr/bin/perl -- use strict; use warnings; use HTML::TreeBuilder; Main(@ARGV); exit(0); sub Main { my $html = '
'; my $tree = HTML::TreeBuilder->new(); $tree->parse($html); local $\ = $/; print $_->as_HTML for $tree->look_down( qw' _tag img ', sub { not defined $_[0]->attr('alt') } ); print '---'; print $_->as_HTML for $tree->look_down( qw' _tag img ', sub { not length $_[0]->attr('alt') } ); print '---'; $_->attr( alt => MAlt($_) ) for $tree->look_down( qw' _tag img ', sub { not length $_[0]->attr('alt') } ); print $_->as_HTML for $tree->look_down(qw' _tag img '); } ## end sub Main sub MAlt { '!' . $_[0]->attr('src') } __END__ --- --- ####
#!/usr/bin/perl --
use strict;
use warnings;
use HTML::TreeBuilder::XPath;
Main(@ARGV);
exit(0);
sub Main {
my $html = '
';
my $tree = HTML::TreeBuilder::XPath->new();
$tree->parse($html);
local $\ = $/;
print $_->as_HTML for $tree->findnodes('//img[not(@alt)]');
print '---';
print $_->as_HTML for $tree->findnodes('//img[not(string-length(@alt))]');
print '---';
$_->attr( alt => MAlt($_) )
for $tree->findnodes('//img[not(string-length(@alt))]');
print $_->as_HTML for $tree->findnodes('//img');
} ## end sub Main
sub MAlt { '!' . $_[0]->attr('src') }
__END__