package Feed; use Moose; use namespace::autoclean; use 5.016; use MooseX::Types::URI 'Uri'; with 'MooseX::Traits'; use XML::Feed; has '+_trait_namespace' => ( default => __PACKAGE__ ); has uri => ( is => 'ro', isa => Uri, coerce => 1, required => 1, ); has feed => ( is => 'ro', isa => 'XML::Feed', lazy_build => 1, ); has _entries => ( is => 'ro', isa => 'ArrayRef[XML::Feed::Entry]', traits => [ 'Array' ], lazy_build => 1, handles => { entries => 'elements', count_entries => 'count', }, ); sub process { my ($self) = @_; for my $entry ($self->entries) { $self->process_entry($entry); } return; } sub _build_feed { my ($self) = @_; return XML::Feed->parse($self->uri) or die XML::Feed->errstr; } sub _build__entries { my ($self) = @_; return [$self->feed->entries]; } sub process_entry { } __PACKAGE__->meta->make_immutable; 1;