NAME
SeeAlso::Identifier::ISBN - International Standard Book Number Identifier
DESCRIPTION
This module handles International Standard Book Numbers as identifiers. Unlike Business::ISBN the constructor of SeeAlso::Identifier::ISBN always returns an defined object. The 'valid' method derived from SeeAlso::Identifier returns whether the ISBN is valid. The methods 'value', 'normalized', 'indexed' and 'int32' can be used on valid ISBNs to get different representations. 'value' and 'int32' can also be used to set the ISBN. ISBN-10 are converted to ISBN-13.
METHODS
new ( [ $value ] )
Create a new ISBN identifier.
value ( [ $value ] )
Get and/or set the value of the ISBN. Returns undef or the valid ISBN-13 value with hyphens. Validity and positition of hyphens are determined with Business::ISBN.
normalized ( )
Returns a Uniform Resource Identifier (URI) for this ISBN if the ISBN is valid.
This is an URI according to RFC 3187 ("urn:isbn:..."). Unfortunately RFC 3187 is broken, because it does not oblige normalization - this method does: first only valid ISBN (with valid checkdigit) are allowed, second all ISBN are converted to ISBN-13 notation without hyphens (URIs without defined normalization and valitidy check are pointless).
Instead of RFC 3187 you could also use "http://purl.org/isbn/".
indexed ( )
Return the valid ISBN-13 without hyphens or undef. This variant is usual because it is always 13 characters. An even more performant format of the ISBN is a long integer value as returned by int32
.
int32 ( [ $value ] )
Returns or sets a space-efficient representation of the ISBN as integer. An ISBN-13 always starts with '978' or '979' and ends with a check digit. This makes 2,000,000,000 which fits in a 32 bit (signed or unsigned) integer value. The integer value is calculated from an ISBN-13 by removing the check digit and subtracting 978,000,000,000.
Please note that '0' is a valid value representing ISBN-13 978-0-00-000000-2 and ISBN-10 0-00-000000-0, but in practise it is only used erroneously. This methods uses '0' as equal to undefined, so int32() for an invalid ISBN returns '0' and int32(0) sets the ISBN to undefined.
AUTHOR
Jakob Voss <jakob.voss@gbv.de>
LICENSE
Copyright (C) 2007-2009 by Verbundzentrale Goettingen (VZG) and Jakob Voss
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.