I've updated MARC::Lint in CVS on SourceForge [1]. Changes between
the CPAN version (1.42) and the current 1.43 release are listed
below. At the end of the changes list, I've included possible
additional changes I'm considering implementing before the 1.43
release to CPAN. I welcome any comments, corrections, or suggestions.
[1] <http://marcpm.cvs.sourceforge.net/marcpm/marc-lint/>
Changes:
- Updated Lint::DATA section with Update No. 7 (Oct. 2006)
- MARC::Lint is incompatibile with Business::ISBN versions
2.00-2.02_01. Business::ISBN versions below 2 and 2.02_02 or above
should work.
- Updated check_record's treatment of 880 fields. Now if the
tagno is 880, check_record attempts to look at subfield 6 for the
linked tagno and uses that as the basis for the tagno to be checked.
- Updated _check_article to account for 880, using subfield 6
linked tagno instead.
- Updated _check_article to account for articles followed
parentheses, apostrophes and/or quotes. Also related bug fixes for
counting punctuation around the article.
- For subfield 6, it should always be the 1st subfield
according to MARC 21 specifications, so check_245 has been updated to
account for subfield 6 being 1st, rather than requiring subfield a to
be 1st.
- Added new test, test880and6.t for 880 field and for subfield 6.
- Added TODO concerning subfield 9. This subfield is not
officially allowed in MARC, since it is locally defined. Some way
needs to be made to allow messages/warnings about this subfield to be
turned off.
- Added TODO concerning subfield 8. This subfield could be
the 1st or 2nd subfield, so the code that checks for the 1st few
subfields (check_245, check_250) should take that into account.
- Updated MARC::Lint::CodeData with most recent version.
#######################
#######################
=head2 Other Lint TODO
=head2 new subs
=head3 allow_subfield_9 ($allow, [EMAIL PROTECTED])
Given a boolean for including or excluding subfield 9 and an arrayref
of tags for which subfield 9 should be allowed or disallowed, revises
MARC::Lint's tag rules accordingly.
#############
sub allow_subfield_9 { #TODO
} #allow_subfield_9 ($allow, [EMAIL PROTECTED])
=head3 redefine_tag_rules ($overwrite_all, \%hash_of_new_rules)
Pass in a boolean indicating whether the existing rule should be
completely overwritten (1; delete existing rules) or just updated (0;
retain existing rules, adding new rules and revising definition of
matching existing rules) and a hashref containing tag rules revised
according to local practices to redefine MARC::Lint's default tag
rules.
For example, to allow subfield 9 in field 035, while retaining the
rest of the 035's rules:
my $overwrite_all = 0;
my %redefined_035 = {'035' => {'9' => 'NR'}};
$lint->redefine_tag_rules ($overwrite_all, \%hash_of_new_rules)
######### outline of $lint original 035 rules:
'_rules' => {
'035' => {
'8' => 'R',
'6' => 'NR',
'ind2_desc' => 'blank',
'ind1_regex' => qr/(?-xism:^ $)/,
'ind2_regex' => qr/(?-xism:^ $)/,
'a' => 'NR',
'ind1' => 'blank',
'ind2' => 'blank',
'z' => 'R',
'repeatable' => 'R',
'ind1_desc' => 'blank'
}, #035
} #rules
######### outline of $lint after adding NR subfield 9:
'_rules' => {
'035' => {
'9' => 'NR',
'8' => 'R',
'6' => 'NR',
'ind2_desc' => 'blank',
'ind1_regex' => qr/(?-xism:^ $)/,
'ind2_regex' => qr/(?-xism:^ $)/,
'a' => 'NR',
'ind1' => 'blank',
'ind2' => 'blank',
'z' => 'R',
'repeatable' => 'R',
'ind1_desc' => 'blank'
}, #035
} #rules
#####
sub redefine_tag_rules { #TODO
} #redefine_tag_rules (\%hash_of_new_rules)
#############
=cut
Thank you for your assistance,
Bryan Baldus
[EMAIL PROTECTED]
[EMAIL PROTECTED]
http://home.inwave.com/eija