PICA::Record - Perl extension for handling PICA+ records
Module for handling PICA records as objects. See PICA::Tutorial for an introduction.
Base constructor for the class. A single string will be parsed line by line into PICA::Field objects, empty lines and start record markers will be skipped. More then one or non scalar parameters will be passed to append so you can use the constructor in the same way:
append
my $record = PICA::Record->new('037A','a' => 'My note');
If no data is given then it just returns a completely empty record.
Creates a clone of this record by copying all fields.
Returns an array of all the fields in the record. The array contains a PICA::Field object for each field in the record. An empty array is returns if the record is empty.
PICA::Field
Returns a list of PICA::Field objects with tags that match the field specifier, or in scalar context, just the first matching Field.
You may specify multiple tags and use regular expressions.
my $field = $record->field("021A","021C"); my $field = $record->field("009P/03"); my @fields = $record->field("02.."); my @fields = $record->field("039[B-E]");
Shortcut method for getting just the subfield's value of a tag (see PICA::Field). Returns a list of subfield values that match or in scalar context, just the first matching subfield.
These are equivalent (in scalar context):
my $title = $pica->field('021A')->subfield('a'); my $title = $pica->subfield('021A','a');
You may also specify both field and subfield seperated by '$'. Don't forget to quote the dollar sign!
my $title = $pica->subfield('021A$a'); my $title = $pica->subfield("021A\$a"); my $title = $pica->subfield("021A$a"); # this won't work!
If either the field or subfield can't be found, undef is returned.
undef
You may also use wildcards like in field() and the subfield() method of PICA::Field:
field()
subfield()
my @values = $pica->subfield('005A', '0a'); # 005A$0 and 005A$a my @values = $pica->subfield('005[AIJ]', '0'); # 005A$0, 005I$0, and 005J$0
Shortcut method to get subfield values of multiple fields and subfields. The fields and subfields are specified in a list of strings, for instance:
my @titles = $pica->values( '021A$a', '025@$a', '026C$a');
This method always returns an array.
You may also use wildcards in the field specifications, see subfield() and field().
Get the main record (levl 0, all tags starting with '0').
Get a list of local records (holdings, level 1 and 2).
Get the copy records (level 2, all tags starting with '2').
Return true if the record is empty (no fields or all fields empty)
Delete fields specified by tags. You can also use wildcards, see field() for examples Returns the number of deleted fields.
Appends one or more fields to the end of the record. Parameters can be PICA::Field objects or parameters that are passed to PICA::Field-new>.
PICA::Field-
my $field = PICA::Field->new('037A','a' => 'My note'); $record->append($field);
is equivalent to
$record->append('037A','a' => 'My note');
You can also append multiple fields with one call:
my $field = PICA::Field->new('037A','a' => 'First note'); $record->append($field, '037A','a' => 'Second note'); $record->append( '037A', 'a' => '1st note', '037A', 'a' => '2nd note', );
Please not that passed PICA::Field objects are not be copied but directly used:
my $field = PICA::Field->new('037A','a' => 'My note'); $record->append($field); $field->replace('a' => 'Your note'); # Also changes $record's field!
You can avoid this by cloning fields:
$record->append($field->copy());
You can also append copies of all fields of another record:
$record->append( $record2 );
The append method returns the number of fields appended.
Replace a field. You must pass a tag and a field. Attention: Only the first occurence will be replaced so better not use this method for repeatable fields.
Sort all fields. Most times the order of fields is not changed and not relevant but sorted fields are helpful for viewing records.
Add header fields to a PICA::Record. You must specify two named parameters (eln and satus). This method is experimental. There is no test whether the header fields already exist.
Returns a string representation of the record for printing.
Returns record as a normalized string. Optionally adds prefix data at the beginning.
print $record->normalized(); print $record->normalized("##TitleSequenceNumber 1\n");
Returns the record in XML format (not tested, nor official).
Get a complied regular expression
The toString, to_xml, and normalized methods should be integrated into PICA::Writer or vice versa.
Jakob Voss <jakob.voss@gbv.de>
<jakob.voss@gbv.de>
Copyright (C) 2007 by Verbundzentrale Goettingen (VZG) and Jakob Voss
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.
To install PICA::Record, copy and paste the appropriate command in to your terminal.
cpanm
cpanm PICA::Record
CPAN shell
perl -MCPAN -e shell install PICA::Record
For more information on module installation, please visit the detailed CPAN module installation guide.