=head1 VERSION
-Version 0.03
+Version 0.04
=cut
-our $VERSION = '0.03';
+our $VERSION = '0.04';
=head1 SYNOPSIS
$log->logdie("need field name in line $curr_line: $l") unless (defined($fld));
if (@d) {
- $v->{$fld} = \@d;
+ $v->{$fld} = [ map {
+ my $sf = $_;
+ if ( $sf =~ s/!(\*)?$/$1/ ) {
+ $self->{must_exist_sf}->{ $fld }->{ $sf }++;
+ };
+ $sf;
+ } @d ];
} else {
$v->{$fld} = 1;
}
delete($v->{subfields}) if (defined($v->{subfields}));
+ my $subfields;
+
foreach my $sf (keys %{ $v }) {
+ $subfields->{ $sf }++;
+
# is non-repeatable but with multiple values?
if ( ! first { $_ eq $sf.'*' } @{$r->{$f}} ) {
if ( ref($v->{$sf}) eq 'ARRAY' ) {
'repeatable in: ' .
join('', _pack_subfields_hash( $h, 1) );
}
+
+ if ( defined( $self->{must_exist_sf}->{$f} ) ) {
+ foreach my $sf (sort keys %{ $self->{must_exist_sf}->{$f} }) {
+warn "====> $f $sf must exist\n";
+ push @errors, "$f missing required subfield $sf"
+ unless (
+ defined( $subfields->{$f} ) &&
+ defined( $subfields->{$f}->{$sf} )
+ )
+ }
+ }
+
}
} elsif (ref($v) eq 'HASH') {
push @errors, "$f has subfields which is not valid";