NAME

MARC::Leader - MARC leader class.

SYNOPSIS

use MARC::Leader;

my $obj = MARC::Leader->new(%params);
my $leader_obj = $obj->parse($leader_str);
my $leader_str = $obj->serialize($leader_obj);

METHODS

new

my $obj = MARC::Leader->new(%params);

Constructor.

Returns instance of object.

parse

my $leader_obj = $obj->parse($leader_str);

Parse MARC leader string to object.

Returns instance of 'Data::MARC::Leader' object.

serialize

my $leader_str = $obj->serialize($leader_obj);

Serialize MARC leader object to string.

Returns string.

ERRORS

new():
        From Class::Utils::set_params():
                Unknown parameter '%s'.

parse():
        Bad length of MARC leader.

serialize():
        Bad 'Data::MARC::Leader' instance to serialize.

EXAMPLE1

use strict;
use warnings;

use Data::Printer;
use MARC::Leader;

if (@ARGV < 1) {
        print "Usage: $0 marc_leader\n";
        exit 1;
}
my $marc_leader = $ARGV[0];

# Object.
my $obj = MARC::Leader->new;

# Parse.
my $leader_obj = $obj->parse($marc_leader);

# Dump to output.
p $leader_obj;

# Output for '02200cem a2200541 i 4500':
# Data::MARC::Leader  {
#     parents: Mo::Object
#     public methods (3):
#         BUILD
#         Mo::utils:
#             check_strings
#         Readonly:
#             Readonly
#     private methods (0)
#     internals: {
#         bibliographic_level               "m",
#         char_coding_scheme                "a",
#         data_base_addr                    541,
#         descriptive_cataloging_form       "i",
#         encoding_level                    " ",
#         impl_def_portion_len              0,
#         indicator_count                   2,
#         length                            2200,
#         length_of_field_portion_len       4,
#         multipart_resource_record_level   " ",
#         starting_char_pos_portion_len     5,
#         status                            "c",
#         subfield_code_count               2,
#         type                              "e",
#         type_of_control                   " ",
#         undefined                         0
#     }
# }

EXAMPLE2

use strict;
use warnings;

use MARC::Leader;
use MARC::Leader::Print;

if (@ARGV < 1) {
        print "Usage: $0 marc_leader\n";
        exit 1;
}
my $marc_leader = $ARGV[0];

# Object.
my $obj = MARC::Leader->new;

# Parse.
my $leader_obj = $obj->parse($marc_leader);

# Print to output.
print scalar MARC::Leader::Print->new->print($leader_obj), "\n";

# Output for '02200cem a2200541 i 4500':
# Record length: 2200
# Record status: Corrected or revised
# Type of record: Cartographic material
# Bibliographic level: Monograph/Item
# Type of control: No specified type
# Character coding scheme: UCS/Unicode
# Indicator count: Number of character positions used for indicators
# Subfield code count: Number of character positions used for a subfield code (2)
# Base address of data: 541
# Encoding level: Full level
# Descriptive cataloging form: ISBD punctuation included
# Multipart resource record level: Not specified or not applicable
# Length of the length-of-field portion: Number of characters in the length-of-field portion of a Directory entry (4)
# Length of the starting-character-position portion: Number of characters in the starting-character-position portion of a Directory entry (5)
# Length of the implementation-defined portion: Number of characters in the implementation-defined portion of a Directory entry (0)
# Undefined: Undefined

EXAMPLE3

use strict;
use warnings;

use Data::MARC::Leader;
use MARC::Leader;

# Object.
my $obj = MARC::Leader->new;

# Data object.
my $data_marc_leader = Data::MARC::Leader->new(
        'bibliographic_level' => 'm',
        'char_coding_scheme' => 'a',
        'data_base_addr' => 541,
        'descriptive_cataloging_form' => 'i',
        'encoding_level' => ' ',
        'impl_def_portion_len' => '0',
        'indicator_count' => '2',
        'length' => 2200,
        'length_of_field_portion_len' => '4',
        'multipart_resource_record_level' => ' ',
        'starting_char_pos_portion_len' => '5',
        'status' => 'c',
        'subfield_code_count' => '2',
        'type' => 'e',
        'type_of_control' => ' ',
        'undefined' => '0',
);

# Serialize.
my $leader = $obj->serialize($data_marc_leader);

# Print to output.
print $leader."\n";

# Output:
# 02200cem a2200541 i 4500

DEPENDENCIES

Class::Utils, Data::MARC::Leader, Error::Pure, Scalar::Util.

SEE ALSO

Data::MARC::Leader

Data object for MARC leader.

REPOSITORY

https://github.com/michal-josef-spacek/MARC-Leader

AUTHOR

Michal Josef Špaček mailto:skim@cpan.org

http://skim.cz

LICENSE AND COPYRIGHT

© 2023-2024 Michal Josef Špaček

BSD 2-Clause License

VERSION

0.05