use Number::Phone::US qw(is_valid_number); #Format is easier to work with than the simple constraints version my $profile = { required => [qw( p1 p2 p3 )], constraints => { p1 => { constraint => sub { my $val .= "$_-" for @_; chop $val; is_valid_number($val)}, params => [ qw( p1 p2 p3 ) ], }, }