Perl Mojo::Dom对象的'at'方法做什么?

Perl Mojo::Dom对象的'at'方法做什么?,perl,mojolicious,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 { $_->t

刚刚在以下代码中遇到:

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
方法在这里到底做了什么?

在本例中,是一个在
$dom
变量上调用的方法,该变量是的一个实例。文档告诉我们使用
at
方法

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

这是返回第一个匹配的特殊情况
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;
当然,这取决于具体情况