近頃版/another blog@hatena/Wiki/BBS
< そろそろ欲しくなってきた | 購入物 >
ぐぐる様で検索してもすぐに出てこないのでカッとなって書いた。
とりあえずコマンドとして動く版を晒しておく。入力値のチェックしなさぶりとか、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";
}
}