NAME MARC::Spec - A MARCspec parser and builder SYNOPSIS use MARC::Spec; # Parsing MARCspec from a string my $ms = MARC::Spec->parse('246[0-1]_16{007/0=\h}$f{245$h~\[microform\]|245$h~\microfilm}'); # Structure say ref $ms; # MARC::Spec say ref $ms->field; # MARC::Spec::Field say ref $ms->field->subspecs; # ARRAY say ref $ms->field->subspecs->[0]; # MARC::Spec::Subspec say ref $ms->field->subspecs->[0]->right; # MARC::Spec say ref $ms->subfields; # ARRAY say ref $ms->subfields->[0]; # MARC::Spec::Subfield say ref $ms->subfields->[0]->subspecs; # ARRAY say ref $ms->subfields->[0]->subspecs->[0]; # ARRAY say ref $ms->subfields->[0]->subspecs->[0]->[1]; # MARC::Spec::Subspec say ref $ms->subfields->[0]->subspecs->[0]->[1]->left; # MARC::Spec say ref $ms->subfields->[0]->subspecs->[0]->[1]->right; # MARC::Spec::Comparisonstring # Access to attributes say $ms->field->base; # 246[0-1]_16 say $ms->field->tag; # 246 say $ms->field->index_start; # 0 say $ms->field->index_end; # 1 say $ms->field->index_length; # 2 say $ms->field->indicator1; # 1 say $ms->field->indicator2; # 6 say $ms->field->subspecs->[0]->subterms; # '007/0=\h' say $ms->field->subspecs->[0]->left->field->tag; # 007 say $ms->field->subspecs->[0]->left->field->char_start; # 0 say $ms->field->subspecs->[0]->left->field->charEnd; # 0 say $ms->field->subspecs->[0]->left->field->charPos; # 0 say $ms->field->subspecs->[0]->left->field->char_length; # 1 say $ms->field->subspecs->[0]->right->comparable; # 'h' say $ms->field->subspecs->[0]->operator; # '=' say $ms->subfields->[0]->base; # 'f[0-#]' say $ms->subfields->[0]->code; # 'f' say $ms->subfields->[0]->index_start; # 0 say $ms->subfields->[0]->index_end; # '#' say $ms->subfields->[0]->subspecs->[0]->[0]->subterms; # '245$h~\[microform\]' say $ms->subfields->[0]->subspecs->[0]->[0]->left->field->tag; # 245 say $ms->subfields->[0]->subspecs->[0]->[0]->left->field->index_length; # -1 say $ms->subfields->[0]->subspecs->[0]->[0]->left->subfields->[0]->code; # 'h' say $ms->subfields->[0]->subspecs->[0]->[0]->right->comparable; # '[microform]' say $ms->subfields->[0]->subspecs->[0]->[1]->right->comparable; # 'microfilm' # creating MARCspec from scratch my $field = MARC::Spec::Field->new('245'); my $subfield = MARC::Spec::Subfield->new('a'); my $spec = MARC::Spec->new($field); $spec->add_subfield($subfield); DESCRIPTION MARC::Spec is a MARCspec - A common MARC record path language parser and validator. METHODS new(MARC::Spec::Field) Create a new MARC::Spec instance. Parameter must be an instance of MARC::Spec::Field. parse(Str) Parses a MARCspec as string and returns an instance of MARC::Spec. add_subfield(MARC::Spec::Subfield) Appends a subfield to the array of the attribute subfields. Parameter must be an instance of MARC::Spec::Subfield. add_subfields(ArrayRef[MARC::Spec::Subfield]) Appends subfields to the array of the attribute subfields. Parameter must be an ArrayRef and elements must be instances of MARC::Spec::Subfield. PREDICATES has_subfields Returns true if attribute subfields has an value and false otherwise. ATTRIBUTES field Obligatory. Attribute field is an instance of MARC::Spec::Field. See MARC::Spec::Field for the description of attributes. subfields If defined, subfields is an array of instances of MARC::Spec::Subfield. See MARC::Spec::Subfield for the description of attributes. AUTHOR Carsten Klee CONTRIBUTORS * Johann Rolschewski, COPYRIGHT AND LICENSE This software is copyright (c) 2016 by Carsten Klee. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. BUGS Please report any bugs to https://github.com/MARCspec/MARC-Spec/issues SEE ALSO MARC::Spec::Field, MARC::Spec::Subfield, MARC::Spec::Subspec, MARC::Spec::Structure, MARC::Spec::Comparisonstring, MARC::Spec::Parser