[libcatmandu-marc-perl] 193/208: Adding skip_errors option
Jonas Smedegaard
dr at jones.dk
Sat Oct 28 03:42:49 UTC 2017
This is an automated email from the git hooks/post-receive script.
js pushed a commit to annotated tag upstream/1.19
in repository libcatmandu-marc-perl.
commit 35a111172031d2faee20d084a20169378200fb3a
Author: Patrick Hochstenbach <patrick.hochstenbach at ugent.be>
Date: Fri Jul 21 10:44:38 2017 +0200
Adding skip_errors option
---
Build.PL | 2 +-
Changes | 4 +-
lib/Catmandu/Exporter/MARC.pm | 73 +++---
lib/Catmandu/Importer/MARC.pm | 106 ++++----
t/01-importer.t | 12 +-
t/broken.xml | 551 ++++++++++++++++++++++++++++++++++++++++++
6 files changed, 674 insertions(+), 74 deletions(-)
diff --git a/Build.PL b/Build.PL
index 4119588..df4fe1a 100644
--- a/Build.PL
+++ b/Build.PL
@@ -1,5 +1,5 @@
-# This file was automatically generated by Dist::Zilla::Plugin::ModuleBuild v6.008.
+# This file was automatically generated by Dist::Zilla::Plugin::ModuleBuild v6.005.
use strict;
use warnings;
diff --git a/Changes b/Changes
index dc310cd..a05b5a7 100644
--- a/Changes
+++ b/Changes
@@ -1,10 +1,12 @@
Revision history for Catmandu-MARC
{{$NEXT}}
+ - Adding skip_errors option in the importer and exporter
+ - More POD
1.171 2017-07-13 08:50:35 CEST
- Fixing 0 as false bug in marc_spec
-
+
1.17 2017-07-12 11:45:56 CEST
- Fixing 0 as false bug when using from/until
- Fixing double fix execution bug
diff --git a/lib/Catmandu/Exporter/MARC.pm b/lib/Catmandu/Exporter/MARC.pm
index 6543656..35a54b6 100644
--- a/lib/Catmandu/Exporter/MARC.pm
+++ b/lib/Catmandu/Exporter/MARC.pm
@@ -6,6 +6,7 @@ use Moo;
our $VERSION = '1.171';
has type => (is => 'ro' , default => sub { 'ISO' });
+has skip_errors => (is => 'ro');
has _exporter => (is => 'ro');
with 'Catmandu::Exporter';
@@ -31,7 +32,20 @@ sub BUILD {
}
sub add {
- $_[0]->_exporter->add($_[1]);
+ my ($self) = @_;
+
+ if ($self->skip_errors) {
+ eval {
+ $self->_exporter->add($_[1]);
+ };
+
+ if ($@) {
+ $self->log->error("error at record " . $self->count . " : $@");
+ }
+ }
+ else {
+ $self->_exporter->add($_[1]);
+ }
}
sub commit {
@@ -48,17 +62,14 @@ Catmandu::Exporter::MARC - Exporter for MARC records
=head1 SYNOPSIS
- # From the command line
- $ catmandu convert MARC --type ISO to MARC --type XML < /foo/bar.mrc
-
- # From Perl
- use Catmandu;
+ # Convert MARC to MARC
+ $ catmandu convert MARC to MARC < /foo/bar.mrc > /foo/output.mrc
- my $importer = Catmandu->importer('MARC', file => "/foo/bar.mrc" , type => 'ISO');
- my $exporter = Catmandu->exporter('MARC', file => "marc.xml", type => "XML" );
+ # Add fixes
+ $ catmandu convert MARC to MARC --fix myfixes.txt < /foo/bar.mrc > /foo/output.mrc
- $exporter->add($importer);
- $exporter->commit;
+ # Convert on format to another format
+ $ catmandu convert MARC --type ISO to MARC --type ALEPHSEQ < /foo/bar.mrc > /foo/bar.aleph
=head1 DESCRIPTION
@@ -67,38 +78,46 @@ to a file or the standard output.
=head1 CONFIGURATION
-In addition to the configuration provided by L<Catmandu::Exporter> (C<file>,
-C<fh>, etc.) the exporter can be configured with the following parameters:
+=over
-The 'type' parameter describes the MARC syntax variant. Supported values include:
+=item file
-=over
+Write output to a local file given by its path or file handle. Alternatively a
+scalar reference can be passed to write to a string and a code reference can be
+used to write to a callback function.
-=item
+=item fh
-ISO: L<Catmandu::Exporter::MARC::ISO> (default)
+Write the output to an L<IO::Handle>. If not specified,
+L<Catmandu::Util::io|Catmandu::Util/IO-functions> is used to create the output
+handle from the C<file> argument or by using STDOUT.
-=item
+=item fix
-XML: L<Catmandu::Exporter::MARC::XML>
+An ARRAY of one or more fixes or file scripts to be applied to exported items.
-=item
+=item type
-MARCMaker: L<Catmandu::Exporter::MARC::MARCMaker>
+The MARC format to parse. The following MARC parsers are available:
-=item
+ ISO: L<Catmandu::Importer::MARC::ISO> (default) - a strict ISO 2709 exporter
+ ALEPHSEQ: L<Catmandu::Importer::MARC::ALEPHSEQ> - an exporter for Ex Libris Aleph sequential files
+ MARCMaker: L<Catmandu::Importer::MARC::MARCMaker> - an exporter for MARCMaker/MARCBreaker records
+ MiJ: L<Catmandu::Importer::MARC::MiJ> (MARC in JSON) - an export for the MARC-in-JSON format
+ XML: L<Catmandu::Importer::MARC::XML> - an exporter for the MARC XML format
-MiJ: L<Catmandu::Exporter::MARC::MiJ> (MARC in JSON)
+=item skip_errors
-=item
+If set, then any errors when parsing MARC output will be skipped and ignored. Use the
+debug setting of catmandu to view all error messages:
-ALEPHSEQ: L<Catmandu::Exporter::MARC::ALEPHSEQ>
+ $ catmandu -D convert MARC to MARC --skip_errors 1 --fix myfixes.txt < /foo/bar.mrc
-=back
+=item <other>
- E.g.
+Every MARC importer can have its own options. Check the documentation of the specific importer.
- catmandu convert MARC --type XML to MARC --type ISO < marc.xml > marc.iso
+=back
=head1 SEE ALSO
diff --git a/lib/Catmandu/Importer/MARC.pm b/lib/Catmandu/Importer/MARC.pm
index 7a600ad..1024185 100644
--- a/lib/Catmandu/Importer/MARC.pm
+++ b/lib/Catmandu/Importer/MARC.pm
@@ -6,6 +6,7 @@ use Moo;
our $VERSION = '1.171';
has type => (is => 'ro' , default => sub { 'ISO' });
+has skip_errors => (is => 'ro');
has _importer => (is => 'ro');
with 'Catmandu::Importer';
@@ -36,7 +37,27 @@ sub BUILD {
}
sub generator {
- $_[0]->_importer->generator;
+ my ($self) = @_;
+
+ if ($self->skip_errors) {
+ my $gen = $self->_importer->generator;
+ my $nr = 0;
+ sub {
+ my $item = 0;
+ do {
+ $nr++;
+ try {
+ $item = $gen->();
+ } catch {
+ $self->log->error("error at record $nr : $_");
+ };
+ } while (defined($item) && $item == 0);
+ $item;
+ };
+ }
+ else {
+ $self->_importer->generator;
+ }
}
1;
@@ -48,27 +69,28 @@ Catmandu::Importer::MARC - Package that imports MARC data
=head1 SYNOPSIS
- use Catmandu;
+ # On the command line
+
+ # Convert MARC to JSON (default)
+ $ catmandu convert MARC < /foo/bar.mrc
- # import records from file
- my $importer = Catmandu->importer('MARC',file => '/foo/bar.mrc');
+ # Convert MARC to MARC
+ $ catmandu convert MARC to MARC < /foo/bar.mrc > /foo/output.mrc
- my $count = $importer->each(sub {
- my $record = shift;
- # ...
- });
+ # Add fixes
+ $ catmandu convert MARC to MARC --fix myfixes.txt < /foo/bar.mrc > /foo/output.mrc
- # import records and apply a fixer
- my $fixer = fixer("marc_map('245a','title')");
+ # Create a list of titles
+ $ catmandu convert MARC to TSV --fix "marc_map(245,title); retain(title)" < /foo/bar.mrc
- $fixer->fix($importer)->each(sub {
- my $record = shift;
- printf "title: %s\n" , $record->{title};
- });
+ # Convert MARC XML
+ $ catmandu convert MARC --type XML < /foo/bar.xml
- # Convert MARC to JSON mapping 245a to a title with the L<catmandu> command line client:
+ # Convert ALEPH sequential
+ $ catmandu convert MARC --type ALEPHSEQ < /foo/bar.aleph
- catmandu convert MARC --fix "marc_map('245a','title')" < /foo/bar.mrc
+ # Convert on format to another format
+ $ catmandu convert MARC --type ISO to MARC --type ALEPHSEQ < /foo/bar.mrc > /foo/bar.aleph
=head1 DESCRIPTION
@@ -118,52 +140,48 @@ L<Catmandu::Iterable>.
=head1 CONFIGURATION
-In addition to the configuration provided by L<Catmandu::Importer> (C<file>,
-C<fh>, etc.) the importer can be configured with the following parameters:
-
-
-The 'type' parameter describes the MARC syntax variant. Supported values include:
-
=over
-=item
-
-ISO: L<Catmandu::Importer::MARC::ISO> (default)
-
-=item
+=item file
-MicroLIF: L<Catmandu::Importer::MARC::MicroLIF>
+Read input from a local file given by its path. Alternatively a scalar
+reference can be passed to read from a string.
-=item
+=item fh
-MARCMaker: L<Catmandu::Importer::MARC::MARCMaker>
+Read input from an L<IO::Handle>. If not specified, L<Catmandu::Util::io> is used to
+create the input stream from the C<file> argument or by using STDIN.
-=item
+=item fix
-MiJ: L<Catmandu::Importer::MARC::MiJ> (MARC in JSON)
+An ARRAY of one or more fixes or file scripts to be applied to imported items.
-=item
+=item type
-XML: L<Catmandu::Importer::MARC::XML>
+The MARC format to parse. The following MARC parsers are available:
-=item
+ ISO: L<Catmandu::Importer::MARC::ISO> (default) - a strict ISO 2709 parser
+ RAW: L<Catmandu::Importer::MARC::RAW> - a loose ISO 2709 parser that skips faulty records
+ ALEPHSEQ: L<Catmandu::Importer::MARC::ALEPHSEQ> - a parser for Ex Libris Aleph sequential files
+ Lint: L<Catmandu::Importer::MARC::Lint> - a MARC syntax checker
+ MicroLIF: L<Catmandu::Importer::MARC::MicroLIF> - a parser for the MicroLIF format
+ MARCMaker: L<Catmandu::Importer::MARC::MARCMaker> - a parser for MARCMaker/MARCBreaker records
+ MiJ: L<Catmandu::Importer::MARC::MiJ> (MARC in JSON) - a parser for the MARC-in-JSON format
+ XML: L<Catmandu::Importer::MARC::XML> - a parser for the MARC XML format
-RAW: L<Catmandu::Importer::MARC::RAW>
+=item skip_errors
-=item
+If set, then any errors when parsing MARC input will be skipped and ignored. Use the
+debug setting of catmandu to view all error messages:
-Lint: L<Catmandu::Importer::MARC::Lint>
+ $ catmandu -D convert MARC --skip_errors 1 < /foo/bar.mrc
-=item
+=item <other>
-ALEPHSEQ: L<Catmandu::Importer::MARC::ALEPHSEQ>
+Every MARC importer can have its own options. Check the documentation of the specific importer.
=back
- E.g.
-
- catmandu convert MARC --type XML to MARC --type ISO < marc.xml > marc.iso
-
=head1 SEE ALSO
L<Catmandu::Exporter::MARC>
diff --git a/t/01-importer.t b/t/01-importer.t
index 7b1909a..1c1d456 100644
--- a/t/01-importer.t
+++ b/t/01-importer.t
@@ -5,7 +5,7 @@ use warnings;
use Catmandu::Importer::MARC;
use MARC::File::USMARC;
-use Test::Simple tests => 9;
+use Test::Simple tests => 10;
my $importer = Catmandu::Importer::MARC->new(
file => 't/camel.mrc',
@@ -43,3 +43,13 @@ $importer = Catmandu::Importer::MARC->new(
);
$records = $importer->to_array();
ok( $records->[0]->{'_id'} eq '2000.', 'got _id from subfield' );
+
+# Test broken records
+$importer = Catmandu::Importer::MARC->new(
+ file => 't/broken.xml',
+ type => "XML",
+ skip_errors => 1,
+);
+$records = $importer->to_array();
+
+ok (@$records == 9, 'skipped one record');
diff --git a/t/broken.xml b/t/broken.xml
new file mode 100644
index 0000000..a972098
--- /dev/null
+++ b/t/broken.xml
@@ -0,0 +1,551 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<marc:collection xmlns:marc="http://www.loc.gov/MARC21/slim">
+ <marc:record>
+ <marc:leader>00755cam 22002414a 4500</marc:leader>
+ <marc:controlfield tag="001">fol05731351 </marc:controlfield>
+ <marc:controlfield tag="003">IMchF</marc:controlfield>
+ <marc:controlfield tag="005">20000613133448.0</marc:controlfield>
+ <marc:controlfield tag="008">000107s2000 nyua 001 0 eng </marc:controlfield>
+ <marc:datafield tag="010" ind1=" " ind2=" ">
+ <marc:subfield code="a"> 00020737 </marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="020" ind1=" " ind2=" ">
+ <marc:subfield code="a">0471383147 (paper/cd-rom : alk. paper)</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="040" ind1=" " ind2=" ">
+ <marc:subfield code="a">DLC</marc:subfield>
+ <marc:subfield code="c">DLC</marc:subfield>
+ <marc:subfield code="d">DLC</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="042" ind1=" " ind2=" ">
+ <marc:subfield code="a">pcc</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="050" ind1="0" ind2="0">
+ <marc:subfield code="a">QA76.73.P22</marc:subfield>
+ <marc:subfield code="b">M33 2000</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="082" ind1="0" ind2="0">
+
+ </marc:datafield>
+ <marc:datafield tag="100" ind1="1" ind2=" ">
+ <marc:subfield code="a">Martinsson, Tobias,</marc:subfield>
+ <marc:subfield code="d">1976-</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="245" ind1="1" ind2="0">
+ <marc:subfield code="a">ActivePerl with ASP and ADO /</marc:subfield>
+ <marc:subfield code="c">Tobias Martinsson.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="260" ind1=" " ind2=" ">
+ <marc:subfield code="a">New York :</marc:subfield>
+ <marc:subfield code="b">John Wiley & Sons,</marc:subfield>
+ <marc:subfield code="c">2000.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="300" ind1=" " ind2=" ">
+ <marc:subfield code="a">xxi, 289 p. :</marc:subfield>
+ <marc:subfield code="b">ill. ;</marc:subfield>
+ <marc:subfield code="c">23 cm. +</marc:subfield>
+ <marc:subfield code="e">1 computer laser disc (4 3/4 in.)</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="500" ind1=" " ind2=" ">
+ <marc:subfield code="a">"Wiley Computer Publishing."</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="650" ind1=" " ind2="0">
+ <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="630" ind1="0" ind2="0">
+ <marc:subfield code="a">Active server pages.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="630" ind1="0" ind2="0">
+ <marc:subfield code="a">ActiveX.</marc:subfield>
+ </marc:datafield>
+ </marc:record>
+ <marc:record>
+ <marc:leader>00647pam 2200241 a 4500</marc:leader>
+ <marc:controlfield tag="001">fol05754809 </marc:controlfield>
+ <marc:controlfield tag="003">IMchF</marc:controlfield>
+ <marc:controlfield tag="005">20000601115601.0</marc:controlfield>
+ <marc:controlfield tag="008">000203s2000 mau 001 0 eng </marc:controlfield>
+ <marc:datafield tag="010" ind1=" " ind2=" ">
+ <marc:subfield code="a"> 00022023 </marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="020" ind1=" " ind2=" ">
+ <marc:subfield code="a">1565926994</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="040" ind1=" " ind2=" ">
+ <marc:subfield code="a">DLC</marc:subfield>
+ <marc:subfield code="c">DLC</marc:subfield>
+ <marc:subfield code="d">DLC</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="042" ind1=" " ind2=" ">
+ <marc:subfield code="a">pcc</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="050" ind1="0" ind2="0">
+ <marc:subfield code="a">QA76.73.P22</marc:subfield>
+ <marc:subfield code="b">D47 2000</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="082" ind1="0" ind2="0">
+ <marc:subfield code="a">005.74</marc:subfield>
+ <marc:subfield code="2">21</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="100" ind1="1" ind2=" ">
+ <marc:subfield code="a">Descartes, Alligator.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="245" ind1="1" ind2="0">
+ <marc:subfield code="a">Programming the Perl DBI /</marc:subfield>
+ <marc:subfield code="c">Alligator Descartes and Tim Bunce.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="260" ind1=" " ind2=" ">
+ <marc:subfield code="a">Cmabridge, MA :</marc:subfield>
+ <marc:subfield code="b">O'Reilly,</marc:subfield>
+ <marc:subfield code="c">2000.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="263" ind1=" " ind2=" ">
+ <marc:subfield code="a">1111</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="300" ind1=" " ind2=" ">
+ <marc:subfield code="a">p. cm.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="650" ind1=" " ind2="0">
+ <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="650" ind1=" " ind2="0">
+ <marc:subfield code="a">Database management.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="700" ind1="1" ind2=" ">
+ <marc:subfield code="a">Bunce, Tim.</marc:subfield>
+ </marc:datafield>
+ </marc:record>
+ <marc:record>
+ <marc:leader>00605cam 22002054a 4500</marc:leader>
+ <marc:controlfield tag="001">fol05843555 </marc:controlfield>
+ <marc:controlfield tag="003">IMchF</marc:controlfield>
+ <marc:controlfield tag="005">20000525142739.0</marc:controlfield>
+ <marc:controlfield tag="008">000318s1999 cau b 001 0 eng </marc:controlfield>
+ <marc:datafield tag="010" ind1=" " ind2=" ">
+ <marc:subfield code="a"> 00501349 </marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="040" ind1=" " ind2=" ">
+ <marc:subfield code="a">DLC</marc:subfield>
+ <marc:subfield code="c">DLC</marc:subfield>
+ <marc:subfield code="d">DLC</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="042" ind1=" " ind2=" ">
+ <marc:subfield code="a">pcc</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="050" ind1="0" ind2="0">
+ <marc:subfield code="a">QA76.73.P22</marc:subfield>
+ <marc:subfield code="b">B763 1999</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="082" ind1="0" ind2="0">
+ <marc:subfield code="a">005.13/3</marc:subfield>
+ <marc:subfield code="2">21</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="100" ind1="1" ind2=" ">
+ <marc:subfield code="a">Brown, Martin C.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="245" ind1="1" ind2="0">
+ <marc:subfield code="a">Perl :</marc:subfield>
+ <marc:subfield code="b">programmer's reference /</marc:subfield>
+ <marc:subfield code="c">Martin C. Brown.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="260" ind1=" " ind2=" ">
+ <marc:subfield code="a">Berkeley :</marc:subfield>
+ <marc:subfield code="b">Osborne/McGraw-Hill,</marc:subfield>
+ <marc:subfield code="c">c1999.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="300" ind1=" " ind2=" ">
+ <marc:subfield code="a">xix, 380 p. ;</marc:subfield>
+ <marc:subfield code="c">22 cm.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="504" ind1=" " ind2=" ">
+ <marc:subfield code="a">Includes bibliographical references and index.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="650" ind1=" " ind2="0">
+ <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+ </marc:datafield>
+ </marc:record>
+ <marc:record>
+ <marc:leader>00579cam 22002054a 4500</marc:leader>
+ <marc:controlfield tag="001">fol05843579 </marc:controlfield>
+ <marc:controlfield tag="003">IMchF</marc:controlfield>
+ <marc:controlfield tag="005">20000525142716.0</marc:controlfield>
+ <marc:controlfield tag="008">000318s1999 caua 001 0 eng </marc:controlfield>
+ <marc:datafield tag="010" ind1=" " ind2=" ">
+ <marc:subfield code="a"> 00502116 </marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="020" ind1=" " ind2=" ">
+ <marc:subfield code="a">0072120002</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="040" ind1=" " ind2=" ">
+ <marc:subfield code="a">DLC</marc:subfield>
+ <marc:subfield code="c">DLC</marc:subfield>
+ <marc:subfield code="d">DLC</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="042" ind1=" " ind2=" ">
+ <marc:subfield code="a">pcc</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="050" ind1="0" ind2="0">
+ <marc:subfield code="a">QA76.73.P22</marc:subfield>
+ <marc:subfield code="b">B762 1999</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="082" ind1="0" ind2="0">
+ <marc:subfield code="a">005.13/3</marc:subfield>
+ <marc:subfield code="2">21</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="100" ind1="1" ind2=" ">
+ <marc:subfield code="a">Brown, Martin C.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="245" ind1="1" ind2="0">
+ <marc:subfield code="a">Perl :</marc:subfield>
+ <marc:subfield code="b">the complete reference /</marc:subfield>
+ <marc:subfield code="c">Martin C. Brown.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="260" ind1=" " ind2=" ">
+ <marc:subfield code="a">Berkeley :</marc:subfield>
+ <marc:subfield code="b">Osborne/McGraw-Hill,</marc:subfield>
+ <marc:subfield code="c">c1999.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="300" ind1=" " ind2=" ">
+ <marc:subfield code="a">xxxv, 1179 p. :</marc:subfield>
+ <marc:subfield code="b">ill. ;</marc:subfield>
+ <marc:subfield code="c">24 cm.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="650" ind1=" " ind2="0">
+ <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+ </marc:datafield>
+ </marc:record>
+ <marc:record>
+ <marc:leader>00801nam 22002778a 4500</marc:leader>
+ <marc:controlfield tag="001">fol05848297 </marc:controlfield>
+ <marc:controlfield tag="003">IMchF</marc:controlfield>
+ <marc:controlfield tag="005">20000524125727.0</marc:controlfield>
+ <marc:controlfield tag="008">000518s2000 mau 001 0 eng </marc:controlfield>
+ <marc:datafield tag="010" ind1=" " ind2=" ">
+ <marc:subfield code="a"> 00041664 </marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="020" ind1=" " ind2=" ">
+ <marc:subfield code="a">1565924193</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="040" ind1=" " ind2=" ">
+ <marc:subfield code="a">DLC</marc:subfield>
+ <marc:subfield code="c">DLC</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="042" ind1=" " ind2=" ">
+ <marc:subfield code="a">pcc</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="050" ind1="0" ind2="0">
+ <marc:subfield code="a">QA76.73.P22</marc:subfield>
+ <marc:subfield code="b">G84 2000</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="082" ind1="0" ind2="0">
+ <marc:subfield code="a">005.2/762</marc:subfield>
+ <marc:subfield code="2">21</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="100" ind1="1" ind2=" ">
+ <marc:subfield code="a">Guelich, Scott.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="245" ind1="1" ind2="0">
+ <marc:subfield code="a">CGI programming with Perl /</marc:subfield>
+ <marc:subfield code="c">Scott Guelich, Shishir Gundavaram & Gunther Birznieks.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="250" ind1=" " ind2=" ">
+ <marc:subfield code="a">2nd ed., expanded & updated</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="260" ind1=" " ind2=" ">
+ <marc:subfield code="a">Cambridge, Mass. :</marc:subfield>
+ <marc:subfield code="b">O'Reilly,</marc:subfield>
+ <marc:subfield code="c">2000.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="263" ind1=" " ind2=" ">
+ <marc:subfield code="a">0006</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="300" ind1=" " ind2=" ">
+ <marc:subfield code="a">p. cm.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="650" ind1=" " ind2="0">
+ <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="650" ind1=" " ind2="0">
+ <marc:subfield code="a">CGI (Computer network protocol)</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="650" ind1=" " ind2="0">
+ <marc:subfield code="a">Internet programming.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="700" ind1="1" ind2=" ">
+ <marc:subfield code="a">Gundavaram, Shishir.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="700" ind1="1" ind2=" ">
+ <marc:subfield code="a">Birznieks, Gunther.</marc:subfield>
+ </marc:datafield>
+ </marc:record>
+ <marc:record>
+ <marc:leader>00665nam 22002298a 4500</marc:leader>
+ <marc:controlfield tag="001">fol05865950 </marc:controlfield>
+ <marc:controlfield tag="003">IMchF</marc:controlfield>
+ <marc:controlfield tag="005">20000615103017.0</marc:controlfield>
+ <marc:controlfield tag="008">000612s2000 mau 100 0 eng </marc:controlfield>
+ <marc:datafield tag="010" ind1=" " ind2=" ">
+ <marc:subfield code="a"> 00055759 </marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="020" ind1=" " ind2=" ">
+ <marc:subfield code="a">0596000138</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="040" ind1=" " ind2=" ">
+ <marc:subfield code="a">DLC</marc:subfield>
+ <marc:subfield code="c">DLC</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="042" ind1=" " ind2=" ">
+ <marc:subfield code="a">pcc</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="050" ind1="0" ind2="0">
+ <marc:subfield code="a">QA76.73.P22</marc:subfield>
+ <marc:subfield code="b">P475 2000</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="082" ind1="0" ind2="0">
+ <marc:subfield code="a">005.13/3</marc:subfield>
+ <marc:subfield code="2">21</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="111" ind1="2" ind2=" ">
+ <marc:subfield code="a">Perl Conference 4.0</marc:subfield>
+ <marc:subfield code="d">(2000 :</marc:subfield>
+ <marc:subfield code="c">Monterey, Calif.)</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="245" ind1="1" ind2="0">
+ <marc:subfield code="a">Proceedings of the Perl Conference 4.0 :</marc:subfield>
+ <marc:subfield code="b">July 17-20, 2000, Monterey, California.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="250" ind1=" " ind2=" ">
+ <marc:subfield code="a">1st ed.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="260" ind1=" " ind2=" ">
+ <marc:subfield code="a">Cambridge, Mass. :</marc:subfield>
+ <marc:subfield code="b">O'Reilly,</marc:subfield>
+ <marc:subfield code="c">2000.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="263" ind1=" " ind2=" ">
+ <marc:subfield code="a">0006</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="300" ind1=" " ind2=" ">
+ <marc:subfield code="a">p. cm.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="650" ind1=" " ind2="0">
+ <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+ <marc:subfield code="v">Congresses.</marc:subfield>
+ </marc:datafield>
+ </marc:record>
+ <marc:record>
+ <marc:leader>00579nam 22002178a 4500</marc:leader>
+ <marc:controlfield tag="001">fol05865956 </marc:controlfield>
+ <marc:controlfield tag="003">IMchF</marc:controlfield>
+ <marc:controlfield tag="005">20000615102948.0</marc:controlfield>
+ <marc:controlfield tag="008">000612s2000 mau 000 0 eng </marc:controlfield>
+ <marc:datafield tag="010" ind1=" " ind2=" ">
+ <marc:subfield code="a"> 00055770 </marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="020" ind1=" " ind2=" ">
+ <marc:subfield code="a">1565926099</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="040" ind1=" " ind2=" ">
+ <marc:subfield code="a">DLC</marc:subfield>
+ <marc:subfield code="c">DLC</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="042" ind1=" " ind2=" ">
+ <marc:subfield code="a">pcc</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="050" ind1="0" ind2="0">
+ <marc:subfield code="a">QA76.73.P22</marc:subfield>
+ <marc:subfield code="b">B43 2000</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="082" ind1="0" ind2="0">
+ <marc:subfield code="a">005.13/3</marc:subfield>
+ <marc:subfield code="2">21</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="100" ind1="1" ind2=" ">
+ <marc:subfield code="a">Blank-Edelman, David N.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="245" ind1="1" ind2="0">
+ <marc:subfield code="a">Perl for system administration /</marc:subfield>
+ <marc:subfield code="c">David N. Blank-Edelman.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="260" ind1=" " ind2=" ">
+ <marc:subfield code="a">Cambridge, Mass. :</marc:subfield>
+ <marc:subfield code="b">O'Reilly,</marc:subfield>
+ <marc:subfield code="c">2000.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="263" ind1=" " ind2=" ">
+ <marc:subfield code="a">0006</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="300" ind1=" " ind2=" ">
+ <marc:subfield code="a">p. cm.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="650" ind1=" " ind2="0">
+ <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+ </marc:datafield>
+ </marc:record>
+ <marc:record>
+ <marc:leader>00661nam 22002538a 4500</marc:leader>
+ <marc:controlfield tag="001">fol05865967 </marc:controlfield>
+ <marc:controlfield tag="003">IMchF</marc:controlfield>
+ <marc:controlfield tag="005">20000615102611.0</marc:controlfield>
+ <marc:controlfield tag="008">000614s2000 mau 000 0 eng </marc:controlfield>
+ <marc:datafield tag="010" ind1=" " ind2=" ">
+ <marc:subfield code="a"> 00055799 </marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="020" ind1=" " ind2=" ">
+ <marc:subfield code="a">0596000278</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="040" ind1=" " ind2=" ">
+ <marc:subfield code="a">DLC</marc:subfield>
+ <marc:subfield code="c">DLC</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="042" ind1=" " ind2=" ">
+ <marc:subfield code="a">pcc</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="050" ind1="0" ind2="0">
+ <marc:subfield code="a">QA76.73.P22</marc:subfield>
+ <marc:subfield code="b">W35 2000</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="082" ind1="0" ind2="0">
+ <marc:subfield code="a">005.13/3</marc:subfield>
+ <marc:subfield code="2">21</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="100" ind1="1" ind2=" ">
+ <marc:subfield code="a">Wall, Larry.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="245" ind1="1" ind2="0">
+ <marc:subfield code="a">Programming Perl /</marc:subfield>
+ <marc:subfield code="c">Larry Wall, Tom Christiansen & Jon Orwant.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="250" ind1=" " ind2=" ">
+ <marc:subfield code="a">3rd ed.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="260" ind1=" " ind2=" ">
+ <marc:subfield code="a">Cambridge, Mass. :</marc:subfield>
+ <marc:subfield code="b">O'Reilly,</marc:subfield>
+ <marc:subfield code="c">2000.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="263" ind1=" " ind2=" ">
+ <marc:subfield code="a">0007</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="300" ind1=" " ind2=" ">
+ <marc:subfield code="a">p. cm.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="650" ind1=" " ind2="0">
+ <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="700" ind1="1" ind2=" ">
+ <marc:subfield code="a">Christiansen, Tom.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="700" ind1="1" ind2=" ">
+ <marc:subfield code="a">Orwant, Jon.</marc:subfield>
+ </marc:datafield>
+ </marc:record>
+ <marc:record>
+ <marc:leader>00603cam 22002054a 4500</marc:leader>
+ <marc:controlfield tag="001">fol05872355 </marc:controlfield>
+ <marc:controlfield tag="003">IMchF</marc:controlfield>
+ <marc:controlfield tag="005">20000706095105.0</marc:controlfield>
+ <marc:controlfield tag="008">000315s1999 njua 001 0 eng </marc:controlfield>
+ <marc:datafield tag="010" ind1=" " ind2=" ">
+ <marc:subfield code="a"> 00500678 </marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="020" ind1=" " ind2=" ">
+ <marc:subfield code="a">013020868X</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="040" ind1=" " ind2=" ">
+ <marc:subfield code="a">DLC</marc:subfield>
+ <marc:subfield code="c">DLC</marc:subfield>
+ <marc:subfield code="d">DLC</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="042" ind1=" " ind2=" ">
+ <marc:subfield code="a">pcc</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="050" ind1="0" ind2="0">
+ <marc:subfield code="a">QA76.73.P22</marc:subfield>
+ <marc:subfield code="b">L69 1999</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="082" ind1="0" ind2="0">
+ <marc:subfield code="a">005.13/3</marc:subfield>
+ <marc:subfield code="2">21</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="100" ind1="1" ind2=" ">
+ <marc:subfield code="a">Lowe, Vincent</marc:subfield>
+ <marc:subfield code="q">(Vincent D.)</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="245" ind1="1" ind2="0">
+ <marc:subfield code="a">Perl programmer's interactive workbook /</marc:subfield>
+ <marc:subfield code="c">Vincent Lowe.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="260" ind1=" " ind2=" ">
+ <marc:subfield code="a">Upper Saddle River, NJ :</marc:subfield>
+ <marc:subfield code="b">Prentice Hall PTP,</marc:subfield>
+ <marc:subfield code="c">c1999.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="300" ind1=" " ind2=" ">
+ <marc:subfield code="a">xx, 633 p. :</marc:subfield>
+ <marc:subfield code="b">ill. ;</marc:subfield>
+ <marc:subfield code="c">23 cm.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="650" ind1=" " ind2="0">
+ <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+ </marc:datafield>
+ </marc:record>
+ <marc:record>
+ <marc:leader>00696nam 22002538a 4500</marc:leader>
+ <marc:controlfield tag="001">fol05882032 </marc:controlfield>
+ <marc:controlfield tag="003">IMchF</marc:controlfield>
+ <marc:controlfield tag="005">20000707091904.0</marc:controlfield>
+ <marc:controlfield tag="008">000630s2000 cau 001 0 eng </marc:controlfield>
+ <marc:datafield tag="010" ind1=" " ind2=" ">
+ <marc:subfield code="a"> 00058174 </marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="020" ind1=" " ind2=" ">
+ <marc:subfield code="a">0764547291 (alk. paper)</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="040" ind1=" " ind2=" ">
+ <marc:subfield code="a">DLC</marc:subfield>
+ <marc:subfield code="c">DLC</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="042" ind1=" " ind2=" ">
+ <marc:subfield code="a">pcc</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="050" ind1="0" ind2="0">
+ <marc:subfield code="a">QA76.73.P22</marc:subfield>
+ <marc:subfield code="b">F64 2000</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="082" ind1="0" ind2="0">
+ <marc:subfield code="a">005.13/3</marc:subfield>
+ <marc:subfield code="2">21</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="100" ind1="2" ind2=" ">
+ <marc:subfield code="a">Foster-Johnson, Eric.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="245" ind1="1" ind2="0">
+ <marc:subfield code="a">Cross-platform Perl /</marc:subfield>
+ <marc:subfield code="c">Eric F. Johnson.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="260" ind1=" " ind2=" ">
+ <marc:subfield code="a">Foster City, CA :</marc:subfield>
+ <marc:subfield code="b">IDG Books Worldwide,</marc:subfield>
+ <marc:subfield code="c">2000.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="263" ind1=" " ind2=" ">
+ <marc:subfield code="a">0009</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="300" ind1=" " ind2=" ">
+ <marc:subfield code="a">p. cm.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="500" ind1=" " ind2=" ">
+ <marc:subfield code="a">Includes index.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="650" ind1=" " ind2="0">
+ <marc:subfield code="a">Perl (Computer program language)</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="650" ind1=" " ind2="0">
+ <marc:subfield code="a">Web servers.</marc:subfield>
+ </marc:datafield>
+ <marc:datafield tag="650" ind1=" " ind2="0">
+ <marc:subfield code="a">Cross-platform software development.</marc:subfield>
+ </marc:datafield>
+ </marc:record>
+</marc:collection>
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libcatmandu-marc-perl.git
More information about the Pkg-perl-cvs-commits
mailing list