7 |
BEGIN { |
BEGIN { |
8 |
use Exporter (); |
use Exporter (); |
9 |
use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); |
use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); |
10 |
$VERSION = 0.23; |
$VERSION = 0.24_1; |
11 |
@ISA = qw (Exporter); |
@ISA = qw (Exporter); |
12 |
#Give a hoot don't pollute, do not export more than needed by default |
#Give a hoot don't pollute, do not export more than needed by default |
13 |
@EXPORT = qw (); |
@EXPORT = qw (); |
128 |
option is included to support lagacy application written against version |
option is included to support lagacy application written against version |
129 |
older than 0.21 of this module. By default, it disabled. See L</to_hash>. |
older than 0.21 of this module. By default, it disabled. See L</to_hash>. |
130 |
|
|
131 |
|
=item ignore_empty_subfields |
132 |
|
|
133 |
|
Remove all empty subfields while reading from ISIS file. |
134 |
|
|
135 |
=back |
=back |
136 |
|
|
137 |
=cut |
=cut |
143 |
|
|
144 |
croak "new needs database name (isisdb) as argument!" unless ({@_}->{isisdb}); |
croak "new needs database name (isisdb) as argument!" unless ({@_}->{isisdb}); |
145 |
|
|
146 |
foreach my $v (qw{isisdb debug include_deleted hash_filter}) { |
foreach my $v (qw{isisdb debug include_deleted hash_filter join_subfields_with ignore_empty_subfields}) { |
147 |
$self->{$v} = {@_}->{$v}; |
$self->{$v} = {@_}->{$v} if defined({@_}->{$v}); |
148 |
} |
} |
149 |
|
|
150 |
my @isis_files = grep(/\.(FDT|MST|XRF|CNT)$/i,glob($self->{isisdb}."*")); |
my @isis_files = grep(/\.(FDT|MST|XRF|CNT)$/i,glob($self->{isisdb}."*")); |
388 |
# skip zero-sized fields |
# skip zero-sized fields |
389 |
next if ($FieldLEN[$i] == 0); |
next if ($FieldLEN[$i] == 0); |
390 |
|
|
391 |
push @{$self->{record}->{$FieldTAG[$i]}}, substr($buff,$FieldPOS[$i],$FieldLEN[$i]); |
my $v = substr($buff,$FieldPOS[$i],$FieldLEN[$i]); |
392 |
|
|
393 |
|
if ( $self->{ignore_empty_subfields} ) { |
394 |
|
$v =~ s/(\^\w)+(\^\w)/$2/g; |
395 |
|
$v =~ s/\^\w$//; # last on line? |
396 |
|
next if ($v eq ''); |
397 |
|
} |
398 |
|
|
399 |
|
push @{$self->{record}->{$FieldTAG[$i]}}, $v; |
400 |
} |
} |
401 |
|
|
402 |
$self->{'current_mfn'} = $mfn; |
$self->{'current_mfn'} = $mfn; |
588 |
|
|
589 |
my $row = $self->fetch($mfn) || return; |
my $row = $self->fetch($mfn) || return; |
590 |
|
|
591 |
my $j_rs = $arg->{join_subfields_with}; |
my $j_rs = $arg->{join_subfields_with} || $self->{join_subfields_with}; |
592 |
$j_rs = $self->{join_subfields_with} unless(defined($j_rs)); |
$j_rs = $self->{join_subfields_with} unless(defined($j_rs)); |
593 |
my $i_sf = $arg->{include_subfields}; |
my $i_sf = $arg->{include_subfields}; |
594 |
|
|
611 |
next if (! $t); |
next if (! $t); |
612 |
my ($sf,$v) = (substr($t,0,1), substr($t,1)); |
my ($sf,$v) = (substr($t,0,1), substr($t,1)); |
613 |
# XXX this might be option, but why? |
# XXX this might be option, but why? |
614 |
next unless ($v); |
next unless (defined($v) && $v ne ''); |
615 |
# warn "### $f_nr^$sf:$v",$/ if ($self->{debug} > 1); |
# warn "### $f_nr^$sf:$v",$/ if ($self->{debug} > 1); |
616 |
|
|
617 |
if (ref( $val->{$sf} ) eq 'ARRAY') { |
if (ref( $val->{$sf} ) eq 'ARRAY') { |
770 |
|
|
771 |
=over 8 |
=over 8 |
772 |
|
|
773 |
|
=item 0.24 |
774 |
|
|
775 |
|
Added C<ignore_empty_subfields> |
776 |
|
|
777 |
=item 0.23 |
=item 0.23 |
778 |
|
|
779 |
Added C<hash_filter> to L</to_hash> |
Added C<hash_filter> to L</to_hash> |
780 |
|
|
781 |
|
Fixed bug with documented C<join_subfields_with> in L</new> which wasn't |
782 |
|
implemented |
783 |
|
|
784 |
=item 0.22 |
=item 0.22 |
785 |
|
|
786 |
Added field number when calling C<hash_filter> |
Added field number when calling C<hash_filter> |