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   138573 use vars qw( $VERSION );
  3         22  
  3         210  
5             $VERSION = 1.3;
6             #-----------------------------------------------------------------------
7 3     3   21 use warnings;
  3         5  
  3         95  
8 3     3   17 use strict;
  3         5  
  3         65  
9 3     3   14 use base "Exporter::Tiny";
  3         6  
  3         1504  
10             #=======================================================================
11             our @EXPORT_OK = qw( pesel );
12             #=======================================================================
13             sub new {
14 1     1 1 95 return bless { }, $_[ 0 ];
15             }
16             #=======================================================================
17             sub pesel {
18 2     2 1 92 while( 1 ){
19 2 50       100 my $psl = sprintf( '%02d', rand 100 ) .
20             sprintf( '%02d', rand 13 ) .
21             sprintf( '%02d', rand 28 ) .
22             sprintf( '%03d', rand 1000 ) .
23             sprintf( '%d' , rand > 0.5 ? 1 : 0 ) ;
24            
25 2         16 my @dig = split( //, $psl );
26 2         14 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         9 my $lst = substr( $chk, -1, 1 );
28            
29 2 50       22 return $psl . ( 10 - $lst ) if $lst;
30             #return $psl . ( ( 10 - $lst ) % 10 );
31             }
32             }
33             #=======================================================================
34             1;
35              
36             __END__