From: Egon W. <eg...@us...> - 2002-06-08 18:55:35
|
Update of /cvsroot/woc/woc/lib/perl In directory usw-pr-cvs1:/tmp/cvs-serv30207 Added Files: check_digit.pm Log Message: Added library for checking CAS numbers. --- NEW FILE: check_digit.pm --- #!/usr/local/bin/perl -w package check_digit; use strict; BEGIN { use Exporter (); use vars qw( $VERSION @ISA @EXPORT); $VERSION = "1.00"; @ISA = qw( Exporter ); @EXPORT = qw( &check_digit ); } sub check_digit { my $number = shift; if (($number =~ /^(\d+)\-(\d)(\d)\-(\d)$/) || ($number =~ /^WOC\-(\d+)\-(\d)(\d)\-(\d)$/)) { # verify check digit of CAS or WOC number my $firstpart = $1; my $sum = 2*$2 + $3; my $check_digit = $4; my $i = 3; while ($firstpart) { my $lastdigit = chop ($firstpart); $sum += $i * $lastdigit; $i++; } return ((chop ($sum) == $check_digit && "Correct")); } elsif (($number =~ /^(\d+)\-(\d)(\d)$/) || ($number =~ /^WOC\-(\d+)\-(\d)(\d)$/)) { # generate check digit for CAS or WOC number my $firstpart = $1; my $sum = 2*$2 + $3; my $i = 3; while ($firstpart) { my $lastdigit = chop ($firstpart); $sum += $i * $lastdigit; $i++; } return ("$number-".chop ($sum)); } else { return ("Error: incorrect CAS or WOC number"); } } 1; |