在HTML::Element'中指定多个类;让我们看看例行程序Perl?

在HTML::Element'中指定多个类;让我们看看例行程序Perl?,perl,class,for-loop,html-tree,Perl,Class,For Loop,Html Tree,我正在使用解析一些HTML 能否在“”例程中指定多个类 用于在使用- for ( $tree->look_down( 'class' => 'postbody')) 我还要在同一个循环中搜索另一个类'postprofile' 有没有一种方法可以不必为($tree->look_down('class'=>'postprofile')使用新的- 因为这会返回两组结果,而我只需要一组合并的结果 我尝试使用-for($tree->look_down('class'=>'postbody

我正在使用解析一些HTML

能否在“”例程中指定多个类

用于在使用-

for ( $tree->look_down( 'class' => 'postbody'))
我还要在同一个循环中搜索另一个类
'postprofile'

有没有一种方法可以不必为($tree->look_down('class'=>'postprofile')使用新的-

因为这会返回两组结果,而我只需要一组合并的结果

我尝试使用-
for($tree->look_down('class'=>'postbody | | postprofile'))
但这不管用,


提前谢谢。

尝试使用模式而不是字符串,即

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

Jambo,我不是想粗鲁,但请阅读手册。我为你的问题添加了链接

我假设您没有阅读这些文档,因为您无法找到它们。让我们来解决这个问题:

如何找到您需要的文档

在线:

  • search.cpan.org是一个主要网站,用于搜索cpan模块及其文档。那里有很多东西

  • perldoc.perl.org在线提供了几个最新版本的perl的完整发布文档

命令行:

  • perldoc
    显示了一个目录,列出了您可以阅读的文档的不同部分

  • perldoc-f函数
    是一种快速搜索perlfunc并仅查看一个函数信息的方法。这是一个超级方便的快速参考

  • perldoc Module::Name::Here
    将向您展示一个模块的文档

  • perldoc-perlpod
    是阅读文档部分的示例,在本例中是关于POD格式的文章

我读什么书?

所有这些都很好,但是你怎么知道去哪里看呢?我的意思是,我用了一种叫做“向下看”的东西。文件在哪里

在本例中,您可以看到“look_down”的调用方式始终是这样的
$somevar->look_down(blarg)
。查找
$somevar
的来源。这是什么东西?最糟糕的情况是,您发现这是其他调用的结果,现在您必须找到该调用的文档,并查看返回的内容。但步骤是一样的。递归地推进。最终,您将获得
my$tree=HTML::TreeBuilder->new\u from\u content()
或类似的内容。现在,您可以从HTML::TreeBuilder中的内容文档中读取
新内容。嘿,我们得到了一个HTML::Tree对象,它是HTML::Element的子类!所以我们检查两个类。哇,look_down在HTML::Element中

如果您有从其他模块导入的例程,那么这就有点棘手了。希望您的代码的作者考虑得足够周到,能够明确列出其例程的来源:

use Some::Module qw( useful_sub  confusing_sub );
这意味着
有用的子模块
混乱的子模块
来自
Some::Module

如果你不走运,你的作者只写了
使用Some::Module这意味着您将获得所有默认导出。这意味着您需要阅读文档以了解导入的内容

出于可维护性的考虑,您可以通过始终精确地指定从函数导入的例程来减少这一噩梦。如果不想导入任何内容,可以将其指定为:
usesome::Module()

在寻找普通子名称时,记住它们可能是实际函数会有所帮助。所以别忘了搜索perldoc


最后,我希望你觉得这很有用。R-ing TFM是一种惊人的强大技术,学习如何找到相关文档是打开这种力量的隐藏技能。Perl有大量文档需要浏览,当您不知道在哪里查找时,它可能会让人感到害怕。

我希望这里可以使用普通的逗号来代替胖逗号。是的,我确实觉得它很有用,非常有用。