package Feed::Role::AuthorName; use Moose::Role; use 5.012; use namespace::autoclean; use Email::Address; use Try::Tiny; requires 'process_entry'; before process_entry => sub { my ($self,$entry) = @_; $self->log->trace('before process_entry - begin'); my $author = $entry->author; return unless $author && $author =~ /\@/; try { my $address = (Email::Address->parse($author))[0]; if (my $name = $address->name) { $entry->author($name); } }; $self->log->trace('before process_entry - end'); }; 1;