Skip to content

Instantly share code, notes, and snippets.

@mjlassila
Created April 3, 2014 10:58
Show Gist options
  • Save mjlassila/9952381 to your computer and use it in GitHub Desktop.
Save mjlassila/9952381 to your computer and use it in GitHub Desktop.
# ISBN 13 to 10 conversion, based on http://blog.mikezhang.com/2010/01/28/converting-isbn13-to-isbn10
sub isbn1310 {
my $isbn13=shift;
my @isbn13=split(//,$isbn13);
my $sum =
($isbn13[3] * 10) +
(9 * $isbn13[4]) +
(8 * $isbn13[5]) +
(7 * $isbn13[6]) +
(6 * $isbn13[7]) +
(5 * $isbn13[8]) +
(4 * $isbn13[9]) +
(3 * $isbn13[10]) +
(2 * $isbn13[11]);
my $mode = int(($sum / 11) + 1);
my $last = (11 * $mode) - $sum;
if ($last == 10) {
$last = "X";
} elsif ($last == 11) {
$last = 0;
}
my $isbn10="$isbn13[3]"."$isbn13[4]"."$isbn13[5]"."$isbn13[6]"."$isbn13[7]"."$isbn13[8]"."$isbn13[9]"."$isbn13[10]"."$isbn13[11]"."$last";
return $isbn10;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment