/ / HTML :: Elementのlook_downルーチンPerlで複数のクラスを指定しますか? --perl、class、for-loop、html-tree

HTML :: Elementのlook_downルーチンのPerlで複数のクラスを指定しますか? - perl、class、forループ、htmlツリー

使っています 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")) しかし、これはうまくいきませんでした、

前もって感謝します。

回答:

回答№1については9

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

$tree->look_down( "class" => qr/^(?:postbody|postprofile)$/)

回答№2の場合は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_sub そして confusing_sub から来る Some::Module;

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

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

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

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