NAME
Business::LCCN - Work with Library of Congress Control Number (LCCN) codes
VERSION
Version 1.01
SYNOPSIS
Work with Library of Congress Control Number (LCCN) codes.
use Business::LCCN;
my $lccn = Business::LCCN->new('he 68001993 /HE/r692');
if ($lccn) {
# parse LCCN (common fields)
print 'Prefix ', $lccn->prefix, "\n"; # "he"
print 'Prefix field ', $lccn->prefix_encoded, "\n"; # "he "
print 'Year cataloged ', $lccn->year_cataloged, "\n"; # 1968
print 'Year field ', $lccn->year_encoded, "\n"; # "68"
print 'Serial ', $lccn->serial, "\n"; # "001993"
# stringify LCCN:
# canonical format: "he 68001993 /HE/r692"
print 'Canonical ', $lccn->canonical, "\n";
# simple normalized format: "he68001993"
print 'Normalized ', $lccn->normalized,"\n";
# info: URI: "info:lccn:he68001993"
print 'Info URI ', $lccn->info_uri, "\n";
# lccn.loc.gov permalink: "http://lccn.loc.gov/he68001993"
print 'Permalink ', $lccn->permalink,"\n";
# parse LCCN (uncommon fields)
print 'LCCN Type ', $lccn->lccn_structure, "\n"; # "A" or "B"
print 'Suffix field ', $lccn->suffix_encoded, \n"; # "/HE"
print 'Suffix parts ', $lccn->suffix_alphabetic_identifiers,
"\n"; # ("HE")
print 'Rev year', $lccn->revision_year, "\n"; # 1969
print 'Rev year field ',$lccn->revision_year_encoded,
"\n"; # "69"
print 'Rev number ', $lccn->revision_number,"\n"; # 2
} else {
print " Error : Invalid LCCN \n ";
}
INTERFACE
Methods
new
The new method takes a single encoded LCCN string, in a variety of formats -- with or without hyphens, with proper spacing or without. Examples:
"89-1234", "89-001234", "89001234", "2002-1234", "2002-001234",
"2002001234", " 89001234 ", " 2002001234", "a89-1234",
"a89-001234", "a89001234", "a2002-1234", "a2002-001234",
"a2002001234", "a 89001234 ", "a 2002001234", "ab98-1234",
"ab98-001234", "ab98001234", "ab2002-1234", "ab2002-001234",
"ab2002001234", "ab 98001234 ", "ab 2002001234", "abc89-1234",
"abc89-001234", "abc89001234", "abc89001234 ", permalinks URLs
like "http://lccn.loc.gov/2002001234" and info URIs like
"info:lccn/2002001234"
Returns a Business::LCCN object, or undef if the string can't be parsed as a valid LCCN. If the string can't be parsed, new will warn with a diagnostic message explaining why the string was invalid.
new can also take an optional hashref of options as a second parameter. The only option supported is no_warnings, which will disable any diagnostic warnings explaining why a candidate LCCN string was invalid:
# returns undef, issues warning about input not containing any digits
$foo = LCCN->new('x');
# returns undef, but does not issue any additional warning
$bar = LCCN->new( 'x', { no_warnings => 1 } );
LCCN attributes
lccn_structure
LCCN structure type, either "A" (issued 1898-2000) or "B" (issued 2001-).
prefix
LCCN's alphabetic prefix, 1-3 characters long. Returns an empty string if LCCN has no prefix.
prefix_encoded
The prefix as encoded, either two (structure A) or three (structure B) characters long, space-padded.
year_cataloged
The year a book was cataloged. Returns an undef in cases where the cataloging year in unclear. For example, LCCN " 75425165 //r75" has a cataloged year of 1975.
year_encoded
A two (structure A) or four (structure B) digit string typically representing the year the book was cataloged, but sometimes serving as a checksum, or a source code. For example, LCCN " 75425165 //r75" has an encoded year field of "75".
serial
A six-digit number zero-padded serial number. For example, LCCN " 75425165 //r75" has a serial number of "425165".
suffix_alphabetic_identifiers
Structure A LCCNs can include one or more 1-3 character suffix/alphabetic identifiers. Returns a list of all identifiers present. For example, for LCCN " 79139101 /AC/MN", suffix_alphabetic_identifiers returns ('AC', 'MN').
suffix_encoded
The LCCN's suffix/alphabetic identifier field, as encoded in the LCCN. Returns an empty string if no suffix present.
revision_year
Structure A LCCNs can include a revision date in their bibliographic records. Returns the four-digit year the record was revised, or undef if not present. For example, LCCN " 75425165 //r75" has a revision year of 1975.
revision_year_encoded
The two-letter revision date, as encoded in structure A LCCNs. Returns an empty string if no revision year present. For example, LCCN " 75425165 //r75" has a revision year of "75".
revision_number
Some structure A LCCNs have a revision year and number, representing the number of times the record has been revised. For example, LCCN " 75425165 //r752" has revision_number 2. Returns undef if not present.
LCCN representations
canonical
Returns the canonical 12+ character default representation of an LCCN. For example, " 85000002 " is the canonical representation of "85000002", "85-000002", "85-2", " 85000002".
normalized
Returns the normalized 9-12 character representation of an LCCN. Normalized LCCNs are often used in URIs and Internet-era representations. For example, "n2001050268" is the normalized representation of "n 85-000002 ", "n85-2", "n 85-0000002".
info_uri
Returns the info: URI for an LCCN. For example, the URI for LCCN "n 85-000002 " is "info:lccn/n85000002".
original
Returns the original representation of the LCCN, as passed to new.
permalink
Returns the Library of Congress permalink URL for an LCCN. For example, the permalink URL for LCCN "n 85-000002 " is "http://lccn.loc.gov/n85000002".
Operator overloading
""
In string context, Business::LCCN objects stringify as the canonical representation of the LCCN.
eq, ==
Business::LCCN objects can be compared to other Business::LCCN objects or LCCN strings.
SEE ALSO
Business::ISBN, http://www.loc.gov/marc/lccn_structure.html, http://lccn.loc.gov/, http://www.loc.gov/standards/uri/info.html, http://en.wikipedia.org/wiki/Library_of_Congress_Control_Number
DIAGNOSTICS
Running new on invalid input may generate warnings, unless the no_warnings option is set.
AUTHOR
Anirvan Chatterjee, <anirvan at cpan.org>
BUGS
Please report any bugs or feature requests to bug-business-lccn at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Business-LCCN. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Business::LCCN
You can also look for information at:
RT: CPAN's request tracker
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
COPYRIGHT & LICENSE
Copyright 2008 Anirvan Chatterjee, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.