#!/usr/bin/perl use strict; use warnings; my (@res); while(<>){ my @add = $_ =~ /([\w\.]+\@[\w]+\.[\w]+.*?)[^\w\.]/g; $_ =~ s/\.$// for @add; push @res, @add; } my %uniq; $uniq{$_}++ for @res; @res = sort keys %uniq; print join ";", @res;