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