+ warn "-=> $f_nr ## |$l|\n" if ($debug);
+ $log->debug("-=> $f_nr ## $l");
+
+ # codepage conversion and recode_regex
+ $l = decode($input_encoding, $l, 1);
+ $l =~ s/($recode_regex)/$recode_map->{$1}/g if ($recode_regex && $recode_map);
+
+ # apply regexps
+ if ($rec_regex && defined($rec_regex->{$f_nr})) {
+ $log->logconfess("regexps->{$f_nr} must be ARRAY") if (ref($rec_regex->{$f_nr}) ne 'ARRAY');
+ my $c = 0;
+ foreach my $r (@{ $rec_regex->{$f_nr} }) {
+ my $old_l = $l;
+ $log->logconfess("expected regex in ", dump( $r )) unless defined($r->{regex});
+ eval '$l =~ ' . $r->{regex};
+ if ($old_l ne $l) {
+ my $d = "|$old_l| -> |$l| "; # . $r->{regex};
+ $d .= ' +' . $r->{line} . ' ' . $r->{file} if defined($r->{line});
+ $d .= ' ' . $r->{debug} if defined($r->{debug});
+ $log->debug("MODIFY $d");
+ warn "*** $d\n" if ($debug);
+
+ }
+ $log->error("error applying regex: ",dump($r), $@) if $@;
+ }
+ }
+
+ $l =~ s/\^(\w)/\x1F$1/g if $marc_subfields;
+
+ $log->debug("<=- $f_nr ## |$l|");
+ warn "<=- $f_nr ## $l\n" if ($debug);
+ return $l;
+ });
+
+ $log->debug(sub { dump($rec) });