Bug 2691 - LCCN split (for labels)

This corresponds with the test I submitted earlier and essentially
overrides the partial improvement from Nighswonger under Bug 2500.

Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
This commit is contained in:
Joe Atzberger 2009-03-09 15:19:31 -05:00 committed by Galen Charlton
parent da42e098e0
commit 9c8623fa13
1 changed files with 11 additions and 15 deletions

View File

@ -907,24 +907,20 @@ sub deduplicate_batch {
sub split_lccn {
my ($lccn) = @_;
my ($ll, $wnl, $dec, $cutter, $pubdate) = (0, 0, 0, 0, 0);
$_ = $lccn;
# lccn example 'HE8700.7 .P6T44 1983';
my @splits = m/
(^[a-zA-Z]+) # HE
([0-9]+\.*[0-9]*) # 8700.7
# lccn examples: 'HE8700.7 .P6T44 1983', 'BS2545.E8 H39 1996';
my (@parts) = m/
^([a-zA-Z]+) # HE # BS
(\d+(?:\.\d)*) # 8700.7 # 2545
\s*
(\.*[a-zA-Z0-9]*) # P6T44
(\.*\D+\d*) # .P6 # .E8
\s*
([0-9]*) # 1983
/x;
# strip something occuring spaces too
$splits[0] =~ s/\s+$//;
$splits[1] =~ s/\s+$//;
$splits[2] =~ s/\s+$//;
return @splits;
(.*) # T44 1983 # H39 1996 # everything else (except any trailing spaces)
\s*
/x;
push @parts, split /\s+/, pop @parts; # split the last piece into an arbitrary number of pieces at spaces
$debug and print STDERR "split_lccn array: ", join(" | ", @parts), "\n";
return @parts;
}
sub split_ddcn {