5

HTML::TreeBuilderを使用してHTMLを解析しています。

' look_down 'ルーチンで複数のクラスを指定できますか?

たとえば、以下を使用してHTMLを検索する場合

for ( $tree->look_down( 'class' => 'postbody'))

'postprofile'また、同じループで追加のクラスを検索することでした。

新しいものを使用せずにこれを行う方法はありますか?for ( $tree->look_down( 'class' => 'postprofile' ))

これにより2セットの結果が返されますが、マージされたセットは1つだけです。

私は使ってみました-for ( $tree->look_down( 'class' => 'postbody||postprofile')) しかし、これはうまくいきませんでした、

前もって感謝します。

4

2 に答える 2

9

文字列の代わりにパターンを使用してみてください。

$tree->look_down( 'class' => qr/^(?:postbody|postprofile)$/)
于 2011-07-13T13:05:13.770 に答える
1

ジャンボ、失礼なことはしていませんが、マニュアルを読んでください。あなたの質問へのリンクを追加しました。

ドキュメントが見つからなかったため、ドキュメントを読んでいないと想定します。その問題に対処しましょう:

必要なドキュメントを見つける方法

オンライン:

  • search.cpan.orgは、CPANモジュールとそのドキュメントを検索するために使用されるメインのWebサイトです。そこにはたくさんのものがあります。

  • perldoc.perl.orgには、Perlの最近のいくつかのバージョンに関する完全な出荷ドキュメントがオンラインにあります。

コマンドライン:

  • perldocは、閲覧できるドキュメントのさまざまなセクションを一覧表示した目次を示しています。

  • perldoc -f function perlfuncを検索し、1つの関数のみに関する情報を表示する簡単な方法です。これは非常に便利なクイックリファレンスです。

  • perldoc Module::Name::Hereモジュールのドキュメントが表示されます。

  • perldoc perlpodドキュメントのセクション(この場合はPODフォーマットに関する記事)を読むサンプルです。

私は何を読みますか?

これはすべて素晴らしいことですが、どこを見ればよいかをどうやって知ることができますか?つまり、私が使用している「look_down」と呼ばれるものがあります。ドキュメントはどこにありますか?

この場合、「look_down」は常にこのように呼び出されることがわかります$somevar->look_down(blarg)$somevarどこから来たのかを見つけましょう。どんな物ですか?最悪の場合、それは他の呼び出しの結果であることがわかりました。次に、その呼び出しのドキュメントを見つけて、何が返されるかを確認する必要があります。ただし、手順は同じです。再帰的にプッシュスルーします。最終的には、my $tree = HTML::TreeBuilder->new_from_content()またはそのようなものに到達します。new_from_contentこれで、HTML::TreeBuilderのドキュメントを読むことができます。ねえ、HTML::ElementのサブクラスであるHTML::Treeオブジェクトを取得します。したがって、両方のクラスをチェックします。おっと、look_downはHTML::Elementにあります。

他のモジュールからインポートされたルーチンがある場合、これは少し注意が必要です。うまくいけば、あなたのコードの作者は、彼のルーチンがどこから来たのかを明示的にリストするのに十分思いやりがありました:

use Some::Module qw( useful_sub  confusing_sub );

これは、useful_subconfusing_subから来ることを意味しSome::Moduleます;

運が悪ければ、作者が書いuse Some::Module;たのは、すべてのデフォルトのエクスポートを取得することを意味します。つまり、何がインポートされたかを確認するには、ドキュメントを読む必要があります。

保守性のために、関数からインポートするルーチンを常に正確に指定することで、この悪夢を減らすことができます。NOTHINGをインポートする場合は、次のように指定できます。 use Some::Module ();

プレーンなサブ名を探すときは、それらが実際の関数である可能性があることを覚えておくと役立ちます。したがって、perldocを検索することを忘れないでください。

最後に、これがお役に立てば幸いです。R-ing TFMは驚くほど強力なテクニックであり、関連するドキュメントを見つける方法を学ぶことは、力を解き放つ隠れたスキルです。Perlには、通り抜けるドキュメントがたくさんあり、どこを見ればよいかわからない場合は、威圧的になる可能性があります。

于 2011-07-13T17:00:04.993 に答える