Skip to content

Instantly share code, notes, and snippets.

@jeff
Created May 6, 2011 13:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jeff/958974 to your computer and use it in GitHub Desktop.
Save jeff/958974 to your computer and use it in GitHub Desktop.
#!/usr/bin/perl
use strict; use warnings;
while (<>) {
chomp;
my $bc = $_;
$bc =~ s/"//g;
next if (length($bc) != 14);
next if ($bc !~ m/^1\d+$/);
print "barcode: ", $bc, " ... ";
if (&is_luhn_valid($bc)) {
print "is luhn valid.\n";
} else {
print "NOT luhn valid!\n";
}
}
sub is_luhn_valid {
my ($number, $sum, $even) = (shift, 0, 0);
for my $digit ( reverse split //, $number ) {
$sum += $_ for split //, $digit * (1 + $even);
$even = not $even;
}
return $sum % 10 == 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment