ISBN10, EAN13 相互変換Webアプリ
http://www.eiji8pou.net/perl/scripts/ean2isbn.cgi
探せばどこかにありそうなものだが、探すより作る方が気分的に楽だった。
Webにおくことに意味がある。多分。
スクリプト
#!/usr/local/bin/perl use strict; use CGI::Carp qw(fatalsToBrowser); use CGI; use Business::ISBN qw(ean_to_isbn); use Business::Barcode::EAN13 qw(check_digit); my $q = CGI->new; print $q->header; print $q->start_html(-title=>'EAN and ISBN10 converter'); print $q->h1('EAN to ISBN10'); print $q->start_form; print 'EAN13:'.$q->textfield(-name=>'ean'); print $q->submit(-value=>'convert'); if ( $q->param('ean') ) { print $q->start_div; my $ean = $q->param('ean'); if ( $ean =~ /^(\d{12})(\d{1})$/ ) { my ( $ean12, $cd ) = ( $1, $2 ); my $ccd = check_digit($ean12); if ( $ccd ne $cd ) { print "valid check degit is $ccd.".$q->br; $ean = $ean12.$ccd; } if ( $ean =~ /^978/ ) { my $isbn = Business::ISBN->new(ean_to_isbn($ean)); print $q->h2('EAN:'.$ean.' -> '.'ISBN:'.$isbn->as_string); } elsif ( $ean =~ /^979/ ) { print 'This code is Book. But, can not convert ISBN10.'; } } else { print 'This is not EAN code.'; } print $q->end_div; } print $q->end_form; print $q->hr; print $q->h1('ISBN10 to EAN'); print $q->start_form; print 'ISBN10:'.$q->textfield(-name=>'isbn'); print $q->submit(-value=>'convert'); if ( $q->param('isbn') ) { print $q->start_div; my $isbn = $q->param('isbn'); my $code = Business::ISBN->new($isbn); if ( $code ) { my $cd = $code->checksum; $code->fix_checksum; my $valid_isbn = $code->as_string; my $ccd = chop $valid_isbn; if ( $cd ne $ccd ) { print "valid check degit is $ccd.".$q->br; } print $q->h2('ISBN:'.$code->as_string.' -> '.'EAN:'.$code->as_ean); } else { print 'This is not ISBN10 code.'; } print $q->end_div; } print $q->end_form; print $q->end_html;
Perlってほんと書散らしに向いてるな。