84 |
read_fdt => 1, |
read_fdt => 1, |
85 |
include_deleted => 1, |
include_deleted => 1, |
86 |
hash_filter => sub { |
hash_filter => sub { |
87 |
my $v = shift; |
my ($v,$field_number) = @_; |
88 |
$v =~ s#foo#bar#g; |
$v =~ s#foo#bar#g; |
89 |
}, |
}, |
90 |
debug => 1, |
debug => 1, |
91 |
join_subfields_with => ' ; ', |
join_subfields_with => ' ; ', |
|
regexps => [ |
|
|
's/something/else/g', |
|
|
], |
|
92 |
); |
); |
93 |
|
|
94 |
Options are described below: |
Options are described below: |
126 |
option is included to support lagacy application written against version |
option is included to support lagacy application written against version |
127 |
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>. |
128 |
|
|
|
=item regexpes |
|
|
|
|
|
Define (any number) of regexpes to apply at field values before they are |
|
|
splitted into subfield. This is great place to split subfields in input to |
|
|
mulitple subfields if needed or rename subfields. |
|
|
|
|
129 |
=back |
=back |
130 |
|
|
131 |
=cut |
=cut |
519 |
my $hash = $isis->to_hash({ |
my $hash = $isis->to_hash({ |
520 |
mfn => 42, |
mfn => 42, |
521 |
include_subfields => 1, |
include_subfields => 1, |
|
regexps => [ |
|
|
's/something/else/g', |
|
|
], |
|
522 |
}); |
}); |
523 |
|
|
524 |
Each option controll creation of hash: |
Each option controll creation of hash: |
546 |
Define delimiter which will be used to join repeatable subfields. You can |
Define delimiter which will be used to join repeatable subfields. You can |
547 |
specify option here instead in L</new> if you want to have per-record control. |
specify option here instead in L</new> if you want to have per-record control. |
548 |
|
|
|
=item regexpes |
|
|
|
|
|
Override C<regexpes> specified in L</new>. |
|
|
|
|
549 |
=back |
=back |
550 |
|
|
551 |
=cut |
=cut |
562 |
$mfn = $arg->{mfn} || confess "need mfn in arguments"; |
$mfn = $arg->{mfn} || confess "need mfn in arguments"; |
563 |
} |
} |
564 |
|
|
|
$arg->{regexpes} ||= $self->{regexpes}; |
|
|
|
|
|
confess "regexps must be HASH" if ($arg->{regexps} && ref($arg->{regexps}) ne 'HASH'); |
|
|
|
|
565 |
# init record to include MFN as field 000 |
# init record to include MFN as field 000 |
566 |
my $rec = { '000' => [ $mfn ] }; |
my $rec = { '000' => [ $mfn ] }; |
567 |
|
|
576 |
|
|
577 |
# filter output |
# filter output |
578 |
if ($self->{'hash_filter'}) { |
if ($self->{'hash_filter'}) { |
579 |
$l = $self->{'hash_filter'}->($l); |
$l = $self->{'hash_filter'}->($l, $f_nr); |
580 |
next unless defined($l); |
next unless defined($l); |
581 |
} |
} |
582 |
|
|
|
# apply regexps |
|
|
if ($arg->{regexps} && defined($arg->{regexps}->{$f_nr})) { |
|
|
confess "regexps->{$f_nr} must be ARRAY" if (ref($arg->{regexps}->{$f_nr}) ne 'ARRAY'); |
|
|
my $c = 0; |
|
|
foreach my $r (@{ $arg->{regexps}->{$f_nr} }) { |
|
|
while ( eval '$l =~ ' . $r ) { $c++ }; |
|
|
} |
|
|
warn "## field $f_nr triggered $c regexpes\n" if ($c && $self->{debug}); |
|
|
} |
|
|
|
|
583 |
my $val; |
my $val; |
584 |
my $r_sf; # repeatable subfields in this record |
my $r_sf; # repeatable subfields in this record |
585 |
|
|