--- title: ちょっとミスしてた author: kazu634 date: 2007-12-06 url: /2007/12/06/_714/ wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:3411;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - Perl ---

 最後の13桁目はチェックデジットだから、無視しなきゃいけなかった。だからこんな感じ:

use strict;
use warnings;
# 変数の宣言
my $temp_isbn;
my $_odd;
my $_even;
# 適当なisbn10を代入して、978をつける
$temp_isbn = '978' . '4582744176';
print "isbn: " . $temp_isbn . "\n";
# 一桁ずつばらして配列@fooに代入
my @foo = split(//, $temp_isbn);
# 奇数の処理
# @fooには13桁のisbnが入っている。配列は0-12まで。
# @foo[12]はチェックデジットなので、しかとする。
print 'Odd Number: ';
for (my $i = ; $i <= 11; $i = $i + 2){
$_odd += $foo[$i];
print $foo[$i] . " ";
}
print "\n";
# 偶数の処理。以下同文。
print 'Even Number: ';
for (my $i = 1; $i <= 11; $i = $i + 2){
$_even += $foo[$i];
print $foo[$i] . " ";
}
print "\n";