use strict; use warnings; my( $area_code, $extension ) = ( 333, 321 ); while () { my ($number) = $_ =~ /\s([0-9()-]+)/; $number =~ s/\D//g; if (length( $number ) == 4) { $number = $area_code . $extension . $number; } elsif (length( $number ) == 7) { $number = $area_code . $number; } elsif (length( $number ) == 10) { # do nothing } else { warn "could not parse $number\n"; next; } $number =~ s/(\d{3})(\d{3})(\d{4})/($1)-$2-$3/; $_ =~ s/([0-9()-]+)/$number/; print; } __DATA__ Black, Joe 0987 Smith, Sue 0534 Brown, Andy 587-0986 Smith, Pam (615)-895-1010