.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "MARC::Loader 3pm" .TH MARC::Loader 3pm "2023-01-27" "perl v5.36.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" MARC::Loader \- Perl module for creating MARC record from a hash .SH "VERSION" .IX Header "VERSION" Version 0.004001 .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 10 \& use MARC::Loader; \& my $foo={ \& \*(Aqldr\*(Aq => \*(Aqoptionnal_leader\*(Aq, \& \*(Aqcleannsb\*(Aq => 1, \& \*(Aqf005\*(Aq => [ \& { \& \*(Aqf005_\*(Aq => \*(Aqcontrolfield_contenta\*(Aq \& }, \& { \& \*(Aqf005_\*(Aq => \*(Aqcontrolfield_contentb\*(Aq \& } \& ], \& \*(Aqf006_\*(Aq => \*(Aqcontrolfield_content\*(Aq, \& \*(Aqf010d\*(Aq => \*(Aq45\*(Aq, \& \*(Aqf099c\*(Aq => \*(Aq2011\-02\-03\*(Aq, \& \*(Aqf099t\*(Aq => \*(AqLIVRE\*(Aq, \& \*(Aqi0991\*(Aq => \*(Aq3\*(Aq, \& \*(Aqi0992\*(Aq => \*(Aq4\*(Aq, \& \*(Aqf200a\*(Aq => "\ex88le \ex89titre", \& \*(Aq001##f101a\*(Aq => [\*(Aqlat\*(Aq,\*(Aqfre\*(Aq,\*(Aqspa\*(Aq], \& \*(Aqf215a\*(Aq => [ \*(Aqtest\*(Aq ], \& \*(Aqf700\*(Aq => [ \& { \& \*(Aqf700f\*(Aq => \*(Aq1900\-1950\*(Aq, \& \*(Aqf700a\*(Aq => \*(AqICHER\*(Aq, \& \*(Aqf700b\*(Aq => [\*(Aqjean\*(Aq,\*(Aqfrancis\*(Aq] \& }, \& { \& \*(Aqf700f\*(Aq => \*(Aq1353? \- 1435\*(Aq, \& \*(Aqf700a\*(Aq => \*(AqPAULUS\*(Aq, \& \*(Aqf700b\*(Aq => \*(AqMARIA\*(Aq} \& ], \& \*(Aqf995\*(Aq => [ \& { \& \*(Aqf995e\*(Aq => \*(AqS1\*(Aq, \& \*(Aqf995b\*(Aq => \*(AqMP\*(Aq, \& \*(Aqf995f\*(Aq => \*(Aq8002\-ex\*(Aq \& }, \& { \& \*(Aq001##f995e\*(Aq => \*(AqS2\*(Aq, \& \*(Aq002##f995b\*(Aq => \*(AqMP\*(Aq, \& \*(Aq005##f995f\*(Aq => \*(Aq8001\-ex\*(Aq \& } \& ] \& }; \& my $record = MARC::Loader\->new($foo); \& \& # Here, the command "print $record\->as_formatted;" will return : \& # LDR optionnal_leader \& # 005 controlfield_contenta \& # 005 controlfield_contentb \& # 006 controlfield_content \& # 101 _afre \& # _alat \& # _aspa \& # 010 _d45 \& # 099 34 _c2011\-02\-03 \& # _tLIVRE \& # 200 _ale titre \& # 215 _atest \& # 700 _aICHER \& # _bfrancis \& # _bjean \& # _f1900\-1950 \& # 700 _aPAULUS \& # _bMARIA \& # _f1353? \- 1435 \& # 995 _bMP \& # _eS1 \& # _f8002\-ex \& # 995 _eS2 \& # _bMP \& # _f8001\-ex .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This is a Perl module for creating \s-1MARC\s0 records from a hash variable. MARC::Loader use MARC::Record. .PP \fIHash keys naming convention.\fR .IX Subsection "Hash keys naming convention." .PP The names of hash keys are very important. They must begin with letter \fBf\fR followed by the \fB3\-digit\fR field name ( e.g. f099), followed, for the subfields, by their \fBletter or digit\fR ( e.g. \fBf501b\fR). .PP Repeatable fields are arrays of hash ( e.g., 'f700' => [{'f700f' => '1900','f700a' => '\s-1ICHER\s0'},{'f700f' => '1353','f700a' => '\s-1PAULUS\s0'}] ). .PP Repeatable subfields are arrays ( e.g., 'f101a' => [ 'lat','fre','spa'] ). .PP Controlfields are automatically detected when the hash key begin with letter \fBf\fR followed by \fB3\-digit lower than 10\fR followed by \fBunderscore\fR ( e.g. \fBf005_\fR). .PP Indicators must begin with the letter i followed by the 3\-digit field name followed by the indicator's position (1 or 2) : e.g. \f(CW\*(C`i0991\*(C'\fR. .PP Record's leader can be defined with the hash key 'ldr' ( e.g., 'ldr' => 1 ). .PP \fIreorder fields and subfields\fR .IX Subsection "reorder fields and subfields" .PP Fields and subfields are in lexically order. If you want reorder fields and subfields differently, you can add a reordering string (necessarily followed by ##) at the beginning of hash keys (e.g., to reorder the subfields of f995 to have \f(CW$e\fR followed by \f(CW$b\fR : 'f995' => [{'001##f995e' => 'S2','002##f995b' => '\s-1MP\s0')]};). If you want to reorder fields, please note that the controlfields will always be located before the other (e.g., if you define '001##f101a' => [ 'lat','fre','spa'] , the f101 will be placed after the last controlfield ). .PP Be careful, the reorder is made lexically, not numerically : 10 will be placed before 2, while 002 will be placed before 010. .PP If the script you use to build your hash requires you to precede fields \s-1AND\s0 subfields with a reordering string when you want to reorder only those sub-fields, you can force the module to reorder the fields in alphabetical order with an hash key named 'orderfields' ( e.g., 'orderfields' => 1 ). .PP You can also remove non-sorting characters with an hash key named 'cleannsb' ( e.g., 'cleannsb' => 1 ). .SH "METHOD" .IX Header "METHOD" .SS "\fBnew()\fP" .IX Subsection "new()" .IP "\(bu" 4 \&\f(CW$record\fR = MARC::Loader\->new($foo); .Sp This is the only method provided by the module. .SH "AUTHOR" .IX Header "AUTHOR" Stephane Delaune, (delaune.stephane at gmail.com) .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright 2011 Stephane Delaune for Biblibre.com, all rights reserved. .PP This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. .SH "SEE ALSO" .IX Header "SEE ALSO" .IP "\(bu" 4 MARC::Record () .IP "\(bu" 4 MARC::Field () .IP "\(bu" 4 Library Of Congress \s-1MARC\s0 pages () .Sp The definitive source for all things \s-1MARC.\s0