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 <[email protected]> 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 _______________________________________________ Pkg-perl-cvs-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits
