Business-DK-CPR

 view release on metacpan or  search on metacpan

examples/params-validate.pl  view on Meta::CPAN

    check_cpr(cpr => 1501720000);
};

if ($@) {
    print "CPR is not valid - $@\n";
}

sub check_cpr {
    validate( @_,
    { cpr =>
        { callbacks =>
            { 'validate_cpr' => sub { validateCPR($_[0]); } } } } );
    
    print $_[1]." is a valid CPR\n";

}

lib/Business/DK/CPR.pm  view on Meta::CPAN

        $hash{$_} = $left_hashref->{$_};
    }

    return \%hash;
}

sub calculate {
    my ($birthdate) = @_;

    validate_pos( @_,
        { type => SCALAR, callbacks => { 'date' => \&_checkdate } } );

    my @cprs;
    for ( 1 .. 999 ) {
        my $n = sprintf '%03s', $_;

        #From DK::Business::CVR
        my $sum = _calculate_sum( ( $birthdate . $n ), \@controlcifers );
        my $mod = $sum % MODULUS_OPERAND_1968;

        my $checkciffer = ( MODULUS_OPERAND_1968 - $mod );

lib/Business/DK/CPR.pm  view on Meta::CPAN

    }

    return VALID;
}

sub generate {
    my ( $birthdate, $gender ) = @_;

    validate_pos(
        @_,
        { type => SCALAR, callbacks => { 'date' => \&_checkdate }, },
        { type => SCALAR, optional => 1, default => q{} },
    );

    my @genders;

    if ($gender) {
        push @genders, $gender;
    }
    else {
        @genders = qw(male female);

lib/Business/DK/CPR.pm  view on Meta::CPAN

        return scalar keys %cprs;
    }
}

sub generate2007 {
    my ( $birthdate, $gender ) = @_;

    #TODO assert gender?
    validate_pos(
        @_,
        { type => SCALAR, callbacks => { 'date' => \&_checkdate }, },
        { type => SCALAR, optional  => 1 },
    );

    my @cprs;
    my %seeds;

    if ( defined $gender ) {
        if ( $gender eq MALE ) {
            %seeds = %male_seeds;
        }

lib/Business/DK/CPR.pm  view on Meta::CPAN

        return scalar @cprs;
    }
}

sub generate1968 {
    my ( $birthdate, $gender ) = @_;

    #TODO assert gender?
    validate_pos(
        @_,
        { type => SCALAR, callbacks => { 'date' => \&_checkdate }, },
        { type => SCALAR, optional => 1, default => q{} },
    );

    my @cprs;
    my @malecprs;
    my @femalecprs;

    my $checksum = 0;

    while ( $checksum < 9999 ) {

lib/Business/DK/CPR.pm  view on Meta::CPAN


    #Using with Params::Validate
    #See also examples/

    use Params::Validate qw(:all);
    use Business::DK::CPR qw(validateCPR);

    sub check_cpr {
        validate( @_,
        { cpr =>
            { callbacks =>
                { 'validate_cpr' => sub { validateCPR($_[0]); } } } } );

        print $_[1]." is a valid CPR\n";

    }

=head1 DESCRIPTION

CPR stands for Central Person Registration and is the social security number
used in Denmark.



( run in 0.659 second using v1.01-cache-2.11-cpan-9b1e4054eb1 )