#!/usr/bin/perl use strict; use warnings; use Email::Find qw( ); sub extract_emails { my @emails; Email::Find->new(sub { my ($email, $orig_email) = @_; push @emails, $email->format(); return $orig_email; })->find(\$_[0]); return @emails; } my $text = "this is some text test\@email.com foo bar"; my @found = extract_emails($text);