my %seen; open(FILE, '<', 'file.txt') or die "Unable to open file.txt for reading, $!"; while () { chomp; tr/0-9//cd; $_ = sprintf("%010s", $_); $_ =~ s/(\d{3})(\d{3})(\d{4})/$1-$2-$3/; $seen{$_}++; } close(FILE); open(SAVED, '>', 'saved.txt') or die "Unable to open saved.txt for writing, $!"; print SAVED "$_\n" for (sort keys %seen); close(SAVED);