ISBN 13->10

本のバーコードの上の段(バーコードの下に書いてある13桁の数字)がISBN13です。
横に書いてある、ISBN4-00000-000-0 がISBN10です。
下のサイトを参考にして、ISBN13をISBN10に変換するものです。
EAN/JAN→ASIN - 考える人、コードを書く人

amazonのASINがISBN10の一種で、JANがISBN13の一種だから、これで変換できるかと思ったらできなかったから、
別の使い道を考え中。

$strEAN=9784873111261; #ISBN13
$len=length($strEAN);
$str = substr($strEAN, 3, 9);
$sum = 0;
push (@isbn , $str=~/[0-9]/g);

for($i=0;$i<$len;$i++){
$sum += int($isbn[$i]) * (10 - $i);
}


$num = 11 - ($sum % 11);
if($num == 10){
$strChecked = "X";
}
elsif($num == 11){
$strChecked = "0";
}
else{
$strChecked = $num;
}

print "$str.$strChecked";
~
~
~