BEGIN {
use Exporter ();
use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
- $VERSION = 0.21;
+ $VERSION = 0.23;
@ISA = qw (Exporter);
#Give a hoot don't pollute, do not export more than needed by default
@EXPORT = qw ();
read_fdt => 1,
include_deleted => 1,
hash_filter => sub {
- my $v = shift;
+ my ($v,$field_number) = @_;
$v =~ s#foo#bar#g;
},
debug => 1,
=item hash_filter
-Filter code ref which will be used before data is converted to hash.
+Filter code ref which will be used before data is converted to hash. It will
+receive two arguments, whole line from current field (in C<< $_[0] >>) and
+field number (in C<< $_[1] >>).
=item debug
=item join_subfields_with
Define delimiter which will be used to join repeatable subfields. You can
-specify option here instead in L</new> if you want to have per-record controll.
+specify option here instead in L</new> if you want to have per-record control.
+
+=item hash_filter
+
+You can override C<hash_filter> defined in L</new> using this option.
=back
my $mfn = shift || confess "need mfn!";
my $arg;
+ my $hash_filter = $self->{hash_filter};
+
if (ref($mfn) eq 'HASH') {
$arg = $mfn;
$mfn = $arg->{mfn} || confess "need mfn in arguments";
+ $hash_filter = $arg->{hash_filter} if ($arg->{hash_filter});
}
# init record to include MFN as field 000
my $row = $self->fetch($mfn) || return;
- my $j_rs = $arg->{join_repeatable_subfields};
- $j_rs = $self->{join_repeatable_subfields} unless(defined($j_rs));
+ my $j_rs = $arg->{join_subfields_with};
+ $j_rs = $self->{join_subfields_with} unless(defined($j_rs));
my $i_sf = $arg->{include_subfields};
foreach my $f_nr (keys %{$row}) {
foreach my $l (@{$row->{$f_nr}}) {
# filter output
- if ($self->{'hash_filter'}) {
- $l = $self->{'hash_filter'}->($l);
- next unless defined($l);
- }
+ $l = $hash_filter->($l, $f_nr) if ($hash_filter);
+ next unless defined($l);
my $val;
my $r_sf; # repeatable subfields in this record
As this is young module, new features are added in subsequent version. It's
a good idea to specify version when using this module like this:
- use Biblio::Isis 0.21
+ use Biblio::Isis 0.23
Below is list of changes in specific version of module (so you can target
older versions if you really have to):
=over 8
+=item 0.23
+
+Added C<hash_filter> to L</to_hash>
+
+=item 0.22
+
+Added field number when calling C<hash_filter>
+
=item 0.21
Added C<join_subfields_with> to L</new> and L</to_hash>.
=head1 SEE ALSO
+L<Biblio::Isis::Manual> for CDS/ISIS manual appendix F, G and H which describe file format
+
OpenIsis web site L<http://www.openisis.org>
perl4lib site L<http://perl4lib.perl.org>