Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl -w
- # [06:37:08:teuk@ramses:~/src/perl] ./SIN.pl 046454286
- # 0 currentControl=0
- # 1 currentControl=8
- # 2 currentControl=6
- # 3 currentControl=8
- # 4 currentControl=5
- # 5 currentControl=8
- # 6 currentControl=2
- # 7 currentControl=16
- # 8 currentControl=6
- # checksum=50SIN 046454286 is valid, 50 is divisible by 10
- my $SIN = $ARGV[0];
- unless ( defined($SIN) && ($SIN =~ /[0-9]{9}/ )) {
- print "SIN Invalid\n";
- print "SIN.pl <SIN>\n";
- exit 1;
- }
- my @controls;
- for (my $i=0;$i<9;$i++) {
- my $currentControl = substr($SIN,$i,1);
- if ( $i % 2 ) {
- $currentControl*=2;
- }
- print "$i currentControl=$currentControl\n";
- if ($currentControl > 9) {
- $currentControl = int(substr($currentControl,0,1)) + int(substr($currentControl,1,1));
- }
- push @controls,$currentControl;
- }
- my $checksum = 0;
- for (my $i=0;$i<9;$i++) {
- $checksum+=$controls[$i];
- }
- print "checksum=$checksum";
- if ( $checksum % 10 ) {
- print "SIN $SIN is invalid, $checksum is not divisible by 10\n";
- }
- else {
- print "SIN $SIN is valid, $checksum is divisible by 10\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement