NAME

SeeAlso::Identifier::ISBN - International Standard Book Number as Identifier

VERSION

version 0.71

SYNOPSIS

my $isbn = new SeeAlso::Identifier::ISBN "";

print "invalid" unless $isbn; # $isbn is defined but false !

$isbn->value( '0-8044-2957-x' );
$isbn->value; # '' or ISBN-13 without hyphens (9780804429573)
$isbn; # ISBN-13 as URI (urn:isbn:9780804429573)

$isbn->hash; # long int between 0 and 1999999999 (or '')
$isbn->hash( 59652724 ); # set by hash

$isbn->canonical; # urn:isbn:9780596527242

DESCRIPTION

This module handles International Standard Book Numbers as identifiers. Unlike Business::ISBN the constructor of SeeAlso::Identifier::ISBN always returns an defined identifier with all methods provided by SeeAlso::Identifier. As canonical form the URN representation of ISBN-13 without hyphens is used - that means all ISBN-10 are converted to ISBN-13. As hashed form of an ISBN, a 32 Bit integer can be calculated.

METHODS

parse ( $value )

Get and/or set the value of the ISBN. Returns an empty string or the valid ISBN-13 without hyphens as determinded by Business::ISBN. You can also use this method as function.

canonical

Returns a Uniform Resource Identifier (URI) for this ISBN (or an empty string).

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).

hash ( [ $value ] )

Returns or sets a space-efficient representation of the ISBN as long integer. An ISBN-13 always starts with '978' or '979' and ends with a check digit. This makes 2,000,000,000 possible ISBN which fits in a 32 bit (signed or unsigned) integer value. The integer value is calculated from the ISBN-13 by removing the check digit and subtracting 978,000,000,000.

isbn13

Return the ISBN in ISBN 13 form (or an empty string)

isbn10

Return the ISBN in ISBN 10 form if possible (or an empty string)

NOTES

In theory zero ('0') is a valid ISBN value representing ISBN-10 0-00-000000-0 = ISBN-13 978-0-00-000000-2. In practise this value is mostly used errorously.

For canonical form instead of RFC 3187 you could also use "http://purl.org/isbn/".

AUTHOR

Jakob Voss

COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Jakob Voss.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.