刚刚看到以下代码:
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
方法究竟在这做什么?
答案 0 :(得分:7)
答案 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;
当然取决于细节。