MARC::Spec(3pm)

πŸ“¦
version 2.0.3 Β· 2 versions
  • 2.0.3 Β· debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking (latest)
  • 2.0.3 Β· ubuntu jammy
, in debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking

πŸ’– MARC::Spec β€” the manual page, but make it a group chat πŸ’–

okay bestie so this is MARC::Spec, a Perl module from the User Contributed Perl Documentation section (that's the 3pm part, iykyk). It's a MARCspec parser and builder, and honestly? it's giving structural engineering but for library records. πŸ¦‹


✨ NAME ✨

MARC::Spec β€” A MARCspec parser and builder. that's it, that's the whole vibe. πŸŽ€


✨ SYNOPSIS ✨

no cap, here's the whole thing, exactly as it goes:

use MARC::Spec;

# Parsing MARCspec from a string
my $ms = MARC::Spec::parse('246[0-1]$f{245$h~\[microform\]|245$h~\microfilm}');

# Structure
say ref $ms;                                             # MARC::Spec
say ref $ms->field;                                      # MARC::Spec::Field
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]
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->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);

like… look at that nesting. she's nested. she contains multitudes. πŸ’…


✨ DESCRIPTION ✨

MARC::Spec is a MARCspec parser and builder. MARCspec is A common MARC record path language (http://marcspec.github.io/MARCspec/). periodt. πŸ’–


✨ FUNCTIONS ✨

parse(Str)

Parses a MARCspec as string and returns an instance of MARC::Spec. you hand it a string, it hands you a whole object. iconic behaviour. ✨


✨ METHODS ✨

new(MARC::Spec::Field)

Create a new MARC::Spec instance. the parameter must be an instance of MARC::Spec::Field. no substitutions, bestie. 🫢

add_subfield(MARC::Spec::Subfield)

Appends a subfield to the array of the attribute subfields. the parameter must be an instance of MARC::Spec::Subfield. πŸ’…

add_subfields(ArrayRef[MARC::Spec::Subfield])

Appends subfields to the array of the attribute subfields. the parameter must be an ArrayRef, and the elements must be instances of MARC::Spec::Subfield. it's giving bulk add, it's giving efficiency. πŸ”₯


✨ PREDICATES ✨

has_subfields

Returns true if attribute subfields has an value and false otherwise. πŸ“

has_indicator

Returns true if attribute indicator has an value and false otherwise. πŸ“


✨ ATTRIBUTES ✨

  • field β€” Obligatory. the attribute field is an instance of MARC::Spec::Field. you literally cannot skip this one. πŸ‘‘
  • subfields β€” If defined, subfields is an array of instances of MARC::Spec::Subfield. ✨
  • indicator β€” If defined, indicator is an instance of MARC::Spec::Indicator. ✨

✨ AUTHOR ✨

Carsten Klee <klee at cpan.org> β€” the main character who wrote all this. πŸ‘‘πŸ’–


✨ CONTRIBUTORS ✨

  • Johann Rolschewski, <jorol at cpan> β€” the bestie who pulled up and helped. 🫢

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.

so yeah β€” free, open, slay. πŸ’…βœ¨


✨ BUGS ✨

Please report any bugs to https://github.com/MARCspec/MARC-Spec/issues

not me asking you to file an issue πŸ’€ β€” but fr fr, if something's broken, that's the link. don't just suffer in silence, bestie. πŸ™ˆ

✨ SEE ALSO ✨

the whole friend group, all linked up:

  • MARC::Spec::Field
  • MARC::Spec::Subfield
  • MARC::Spec::Indicator
  • MARC::Spec::Subspec
  • MARC::Spec::Structure
  • MARC::Spec::Comparisonstring
  • MARC::Spec::Parser

and that's the page, bestie 🌈 this one shipped with perl v5.34.0, dated 2022-06-15, and yes the manual name really is MARC::Spec(3pm) the whole time. go parse something gorgeous. πŸ’–πŸ¦‹βœ¨

πŸ“¦ where this page comes from