File Coverage

blib/lib/PESEL/Generator.pm
Criterion Covered Total %
statement 19 19 100.0
branch 2 4 50.0
condition n/a
subroutine 6 6 100.0
pod 2 2 100.0
total 29 31 93.5


line stmt bran cond sub pod time code
1             package PESEL::Generator;
2              
3             #-----------------------------------------------------------------------
4 3     3   138676 use vars qw( $VERSION );
  3         30  
  3         203  
5             $VERSION = 1.4;
6             #-----------------------------------------------------------------------
7 3     3   20 use warnings;
  3         6  
  3         113  
8 3     3   17 use strict;
  3         6  
  3         72  
9 3     3   14 use base "Exporter::Tiny";
  3         6  
  3         1497  
10             #=======================================================================
11             our @EXPORT_OK = qw( pesel );
12             #=======================================================================
13             sub new {
14 1     1 1 97 return bless { }, $_[ 0 ];
15             }
16             #=======================================================================
17             sub pesel {
18 2     2 1 115 while( 1 ){
19 2 50       104 my $psl = sprintf( '%02d', 1 + rand 99 ) .
20             sprintf( '%02d', 1 + rand 12 ) .
21             sprintf( '%02d', 1 + rand 27 ) .
22             sprintf( '%03d', 1 + rand 999 ) .
23             sprintf( '%d' , rand > 0.5 ? 1 : 0 ) ;
24            
25 2         17 my @dig = split( //, $psl );
26 2         15 my $chk = $dig[ 0 ] * 1 + $dig[ 1 ] * 3 + $dig[ 2 ] * 7 + $dig[ 3 ] * 9 + $dig[ 4 ] * 1 + $dig[ 5 ] * 3 + $dig[ 6 ] * 7 + $dig[ 7 ] * 9 + $dig[ 8 ] * 1 + $dig[ 9 ] * 3;
27 2         10 my $lst = substr( $chk, -1, 1 );
28            
29 2 50       25 return $psl . ( 10 - $lst ) if $lst;
30             #return $psl . ( ( 10 - $lst ) % 10 );
31             }
32             }
33             #=======================================================================
34             1;
35              
36             __END__