HTML::TreeBuilderのas_HTMLが思った結果を返してくれなくて、ちょっとはまったのでメモ。
#!/usr/bin/env perl use strict; use warnings; use HTML::TreeBuilder; use Perl6::Say; my $html = <<EOM; <p> aaaa </p> <br> <p> bbb </p> EOM my $tree = HTML::TreeBuilder->new; $tree->parse($html); $tree->eof; say $tree->as_HTML; say $tree->as_XML; $tree->delete;
実行結果
<html><head></head><body><p> aaaa <br /><p> bbb </body></html> <html><head></head><body><p> aaaa </p><br /><p> bbb </p></body></html>
as_HTMLの方は、元々のHTMLに書いていたpの閉じタグをわざわざ削除してしまう。
ので、as_HTMLの結果をブラウザで表示すると、ブラウザが br の後ろに p の閉じタグを補完するので、改行が1つ足りない感じになる。
as_XMLを使うと、ちゃんと p の閉じタグを返してくれるので、期待通りの結果になった。