Business-AT-SSN
view release on metacpan or search on metacpan
lib/Business/AT/SSN.pm view on Meta::CPAN
last unless defined $num[$i];
$sum += $d * $num[$i++];
}
return 1 unless $sum%11 == $num[3];
}
sub get_dob {
my $self = shift;
my ($d, $m, $y) = $self->ssn =~ /^\d{4}(\d{2})(\d{2})(\d{2})$/;
my $now = DateTime->now;
# guess a year
$y = (($now->year) - ($y + 1900) < 100) ? $y + 1900 : $y + 2000;
try {
my $dt = DateTime->new(year => $y, month => $m, day => $d);
$self->date_of_birth( $dt );
return 1;
} catch {
$self->clear_dob;
return 0;
};
}
$ssn_object->ssn('168025025');
is($ssn_object->is_valid, 0, sprintf("[%s] is too short", $ssn_object->ssn));
$ssn_object->ssn('1689250230');
is($ssn_object->is_valid, 1, sprintf("[%s] is a wellformed SSN", $ssn_object->ssn));
$ssn_object->ssn('1688250208');
is($ssn_object->is_valid, 1, sprintf("[%s] is a wellformed SSN", $ssn_object->ssn));
is($ssn_object->date_of_birth->year, 2008, sprintf("[%s] guessed a year", $ssn_object->ssn));
$ssn_object->ssn('w688250208');
is($ssn_object->is_valid, 0, sprintf("[%s] contains invalid character", $ssn_object->ssn));
is($ssn_object->error_messages->[0], 'Invalid characters', sprintf("[%s] error message [%s]", $ssn_object->ssn, $ssn_object->error_messages->[0]));
$ssn_object->ssn('2686251308');
is($ssn_object->is_valid, 1, sprintf("[%s] is a wellformed SSN", $ssn_object->ssn));
is($ssn_object->date_of_birth, undef, sprintf("[%s] has no valid date", $ssn_object->ssn));
my $ssn_o = Business::AT::SSN->new(ssn => $ssn);
( run in 1.010 second using v1.01-cache-2.11-cpan-748bfb374f4 )