From 9db13acebc545f239943a56a6bd5086b84d95100 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Tue, 13 Jul 2010 14:29:59 +0000 Subject: [PATCH] check jmbg --- bin/csv2yaml-upisi2010.pl | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/bin/csv2yaml-upisi2010.pl b/bin/csv2yaml-upisi2010.pl index 3c69b04..5e0b71f 100755 --- a/bin/csv2yaml-upisi2010.pl +++ b/bin/csv2yaml-upisi2010.pl @@ -5,6 +5,8 @@ use strict; # 2010-07-13 Dobrica Pavlinusic +# http://en.wikipedia.org/wiki/Unique_Master_Citizen_Number + use Data::Dump qw/dump/; use YAML qw/DumpFile/; use Text::CSV; @@ -16,6 +18,19 @@ mkdir $dir unless -e $dir; my $path = shift @ARGV || die "usage: $0 file.csv\n"; + +sub valid_jmbg { + my $jmbg = shift; + return 0 unless $jmbg =~ /^\d{13}$/; + my @c = split(//, $jmbg); + my $S=0; + for (my $i=0;$i<6;$i++){ + $S+= (7-$i)*($c[$i]+$c[6+$i]); + } + my $checksum = 11-($S%11); + return $checksum == $c[12]; +} + my $csv = Text::CSV->new ( { binary => 1 } ) # should set binary attribute. or die "Cannot use CSV: ".Text::CSV->error_diag (); @@ -39,7 +54,8 @@ while ( my $row = $csv->getline( $fh ) ) { my $uuid = $row->[2]; DumpFile( "$dir/$uuid.yaml", $info ); - warn "$uuid\n"; + warn "$uuid ", valid_jmbg( $row->[2] ) ? 'OK' : 'INVALID', "\n"; + } $csv->eof or $csv->error_diag(); close $fh; -- 2.20.1