Print

Print


If you're looking for a PHP util, I've got one at
http://www.blyberg.net/files/ -- I've got to do a little bugfix, but it
works as-is.

-----Original Message-----
From: Code for Libraries [mailto:[log in to unmask]] On Behalf Of
Bryan Baldus
Sent: Friday, June 02, 2006 12:03 PM
To: [log in to unmask]
Subject: Re: [CODE4LIB] ISBN 13 chars

On Wednesday, May 31, 2006 11:01 AM, Kevin Kierans
>Anyone willing to share a (preferably) perl 13 to 10 character and a 10

>to 13 character conversion routine?

Below is something I use, in Perl, using Business::ISBN. It prints the
10 when given the 13, and then gives the correct check digit for the
13--so entering '978' plus the 10 as-is would print the correct 13.


###################

use Business::ISBN;
use strict;
use warnings;
print "Please enter 13 digit EAN or ISBN (or q to quit): "; while (my
$line = <>) {
        chomp $line;
        last if ($line =~ /^q/);
        #remove all non-digit (or X) characters from line
        $line =~ s/[^0-9xX]//g;

        #skip lines with no ISBN/EAN number
        if ($line =~ /^\d{9}[\dX]$/) {
                my $is_valid = Business::ISBN::is_valid_checksum($line);
                if ($is_valid == 1) {
                print $line, " is valid\n";
                } #valid
                else {
                print $line, " has bad checksum\n";
                } #not valid
        } #line is 10 digits
        #unless line has ISBN already or is a non-digit line, convert
ean to isbn
        elsif ($line =~ /^\d{12}[\dX]$/) {
                my $isbn = Business::ISBN::ean_to_isbn($line);
                if ($isbn) {
                        print $isbn, " is the 10-digit ISBN\n";
                        my $good_ean =
Business::ISBN::isbn_to_ean($isbn);
                        if ($good_ean) {
                                print $good_ean, " is the correct
13-digit for this ISBN\n";
                        } #if good ean was found
                        else {
                                print "Failed to find EAN for that
supposedly valid ISBN\n";
                        } #something went wrong--what?
                } #isbn defined
                else {
                        print $line, " is not a valid ean string\n";
                } #invalid 13 digit
        }
        else {print "$line is an exception (not 10 or 13 digits)\n";}
        print "Please enter 13 digit EAN or ISBN (or q to quit): "; } #
while


########################


I hope this helps,
Bryan Baldus
[log in to unmask]
[log in to unmask]
http://home.inwave.com/eija
eija