CPANのドキュメントは、私が何かを見逃していない限り、この動作について実際には説明していません。私の問題を説明するために、いくつかの簡単なテストコードをまとめました。
#!/usr/bin/perl
use warnings;
use strict;
use HTML::TreeBuilder;
my $testHtml = "
<body>
<h1>
<p>
<p>HELLO!
</p>
</p>
</h1>
</body>";
my $parsedPage = HTML::TreeBuilder->new;
$parsedPage->parse($testHtml);
$parsedPage->eof();
my @p = $parsedPage->look_down('_tag' => 'p');
foreach (@p) {print $_->parent->tag, " : ", $_->tag, "\t", $_->as_text, "\n";}
上記のスクリプトを実行すると、出力は次のようになります。
body : p
body : p HELLO!
すべてのタグが次々と入れ子になっているのを見て、最初のp
タグh1
の親は 、2 番目のp
タグの親は になると思いますp
。親関数body
が両方のタグを表示しているのはなぜですか?