--- 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";