3

次のコードで出くわしました:

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ここでメソッドは正確に何をしますか?

4

2 に答える 2

7

find最初の一致を返す特殊なケースです。一致を表すオブジェクトで満たされfindたオブジェクト (blessed arrayref) を返します。使用すると、最初の一致をオブジェクトとして直接取得します。これはただの便利です。実際、その方法はまさにMojo::CollectionMojo::DOMatMojo::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;

もちろん仕様による。

于 2013-03-22T15:10:59.710 に答える
7

at$domこの場合、 は、 のインスタンスである変数に対して呼び出されるメソッドですMojo::DOM。ドキュメントは、atメソッドが使用されていることを示しています

CSS セレクターを使用して単一の要素を検索します。Mojo::DOM::CSS のすべてのセレクターがサポートされています。

于 2013-03-22T13:20:58.370 に答える