The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

Changes for version 1.41

  • THINGS THAT MAY BREAK YOUR CODE
    • updated DATA to incorporate MARC update 5 (Oct. 2004)
    • check_245( $field ) updated:
      • Makes sure $a exists (and is first subfield).
      • Warns if last character of field is not a period
      • Follows LCRI 1.0C, Nov. 2003 rather than MARC21 rule
      • Verifies that $c is preceded by / (space-/)
      • Verifies that initials in $c are not spaced
      • Verifies that $b is preceded by :;= (space-colon, space-semicolon, space-equals)
      • Verifies that $h is not preceded by space unless it is dash-space
      • Verifies that data of $h is enclosed in square brackets
      • Verifies that $n is preceded by . (period)
      • As part of that, looks for no-space period, or dash-space-period (for replaced elipses)
      • Verifies that $p is preceded by , (no-space-comma) when following $n and . (period) when following other subfields.
      • Performs rudimentary check of 245 2nd indicator vs. 1st word of 245$a (for manual verification). This could use some reworking, and was developed based on a predominantly English collection. Uses the internal _check_article( $field ) method.
    • added _check_article( $field ) internal method for comparing nonfiling indicator against first word of title field
    • added check245.t to test the new check_245 functionality
    • updated lint.t to use File::Spec for path to camel.usmarc
    • removed updir usage so 'make test' works properly
  • ENHANCEMENTS
    • added check for subfield delimiters in fields lower than 010
      • updated lint.t and camel.usmarc with a test for this new code
    • added check_020( $field ):
      • uses Business::ISBN to validate 020$a and 020$z ISBNs. The current version needs work for ISBN-13 checking. Uses an internal sub, _isbn13_check_digit($ean) to validate 13 digit ISBNs, based on code in Business::ISBN. Checking of subfield z needs work (it is currently written for nonstandard practice).
    • added check020.t to test the new check_020 method
    • added check_041( $field ):
      • warns if subfields are not evenly divisible by 3 unless second indicator is 7 (future implementation would ensure that each subfield is exactly 3 characters unless ind2 is 7--since subfields are now repeatable. This is not implemented here due to the large number of records needing to be corrected.).
      • validates against the MARC Code List for Languages (L<http://www.loc.gov/marc/>) using the MARC::Lint::CodeData data pack
    • added check_043( $field )
      • warns if each subfield a is not exactly 7 characters.
      • validates each code against the MARC code list for Geographic Areas (L<http://www.loc.gov/marc/>) using the MARC::Lint::CodeData data pack
    • added check041043.t to test the new check_041 and check_043 methods
    • check_record() now accepts any isa( 'MARC::Record' ).
    • _check_article() no longer trips a Perl warning if an indicator has a non-numeric value.
    • _check_article() updated with exceptions for 'a posteriori' and 'a priori'
    • -Replaced indenting tabs with 4 spaces
    • -marclint utility updated to report errors encountered while translating raw MARC records into MARC::Record objects.

Documentation

MARC record linting utility

Modules

Perl extension for checking validity of MARC records