Subject: | Bad hyphens in some ISBN-13 with Business::ISBN |
Hi Ed and Brian,
Is the following a known problem, and is there any fix?
I'm having great fun with the CPAN package Business::ISBN,
but it's odd that as_string() produces different results for
10-digit and 13-digit ISBNs.
For example, it correctly suggests 91-7119-704-4 but then wrongly
978-91-711-9810-5. In both cases, 91-7 should be followed by
three digits (91-7119-) before the next hyphen.
The file Business/ISBN/Data.pm correctly states:
91 => [ 'Sweden', [ '0' => 1, 20 => 49,
500 => 649, 7000 => 7999,
85000 => 94999, 970000 => 999999 ] ],
This works perfectly fine ISBN-10 and for 978-91-[0-6], but [789]
are followed by just two more digits (e.g. -711-) before the next
hyphen. It also wrongly suggests 978-0-8826-4180-5 (should be
0-88264-) and 978-0-9119-1000-1 (should be 0-911910-).
It is as if it never puts the middle hyphen after the 8:th digit,
which is a reasonable thing to do in an ISBN-10, but not in
ISBN-13. Maybe the Perldoc line "Positions less than 1 and
greater than 9 are silently ignored" for as_string() is the key to
the problem? When we're dealing with ISBN-13s, these positions
should be counted from the end of the string, not from the
beginning.
Here's my program:
#!/usr/bin/perl -w
use Business::ISBN;
use strict;
my $isbn = Business::ISBN->new("9789171198105");
my $pretty = $isbn->as_string;
print "$pretty\n";