Mojo :: Dom对象的`at`方法有什么作用?

时间:2013-03-22 13:17:47

标签: perl mojolicious

刚刚看到以下代码:

use warnings;
use strict;
use Data::Dumper;
use lib './lib/lib/perl5';

use Mojo::DOM;

my $dom = Mojo::DOM->new($html);
my $table = $dom->at('table');
for my $record ($table->children('tr')->each) 
my %record = map { $_->text } $record->children('td')->each;

at方法究竟在这做什么?

2 个答案:

答案 0 :(得分:7)

在这种情况下,

at是一个名为$dom变量的方法,该变量是Mojo::DOM的一个实例。文档告诉我们at方法用于

  

使用CSS选择器查找单个元素。支持Mojo :: DOM :: CSS的所有选择器。

答案 1 :(得分:7)

它是find的特殊情况,它返回第一个匹配项。 find返回一个Mojo::Collection对象(祝福的arrayref),其中填充了表示匹配的Mojo::DOM个对象。当您使用at时,您会直接将第一个匹配作为Mojo::DOM对象获得。这只是方便。实际上这个方法正是

sub at { shift->find(@_)->[0] }

提供的代码省略了Mojo :: Collection的一些功能。我可以写上面的内容:

my $dom = Mojo::DOM->new($html);
my @records = $dom->at('table')->find('tr td')->pluck('text')->each;

当然取决于细节。