Whiteのふりーとーく

ISBN10 / ISBN13 convert by perl

About this Page |過去分一覧

近頃版/another blog@hatena/Wiki/BBS

< そろそろ欲しくなってきた | 購入物 >

 

ISBN10 / ISBN13 convert by perl

ぐぐる様で検索してもすぐに出てこないのでカッとなって書いた。

とりあえずコマンドとして動く版を晒しておく。入力値のチェックしなさぶりとか、perlっぽいインチキぶりとか、あまり見習わないことを推奨。実際には日記のスクリプトにamazon様へのリンクを吐かせるための機構に組み込んだ。

#!/usr/bin/perl
foreach(@ARGV){
    @arr = (split(//,$_));
    if(@arr == 10){
	unshift(@arr,(9,7,8));
	pop(@arr);
	my($odd,$even);
	$odd  = 0;map {$odd  += $_} (@arr[0,2,4,6,8,10]);
	$even = 0;map {$even += $_} (@arr[1,3,5,7,9,11]);
	$check_digit = 10 - ($odd + $even * 3) % 10;
	print join('',@arr,$check_digit),"\n";
    }elsif(@arr == 13){
	splice(@arr,0,3);
	pop(@arr);
	my $c;
	my $m = 10;
	foreach(@arr){
	    $c += $_ * $m;
	    $m--;
	}
	$check_digit = 11 - ($c % 11);
	$check_digit = 'X' if ($check_digit == 10);
	print join('',@arr,$check_digit),"\n";
    }
}

TrackBack ping url:

名前

TrackBack:


御意見・御感想の宛先white@niu.ne.jp