--- trunk/lib/WebPAC/Normalize.pm 2007/04/05 21:50:14 817 +++ trunk/lib/WebPAC/Normalize.pm 2007/09/06 19:12:15 889 @@ -42,11 +42,11 @@ =head1 VERSION -Version 0.28 +Version 0.29 =cut -our $VERSION = '0.28'; +our $VERSION = '0.29'; =head1 SYNOPSIS @@ -535,12 +535,14 @@ my ($f, $pos, $val) = @_; die "need marc(field, position, value)" unless defined($f) && defined($pos); + confess "need val" unless defined $val; + my $update = 0; map { if ($_->[0] eq $f) { my $old = $_->[1]; - if (length($old) < $pos) { + if (length($old) <= $pos) { $_->[1] .= ' ' x ( $pos - length($old) ) . $val; warn "## marc_fixed($f,$pos,'$val') append '$old' -> '$_->[1]'\n" if ($debug > 1); } else { @@ -872,6 +874,9 @@ my ($h,$include_subfields) = @_; + # sanity and ease of use + return $h if (ref($h) ne 'HASH'); + if ( defined($h->{subfields}) ) { my $sfs = delete $h->{subfields} || die "no subfields?"; my @out; @@ -1021,7 +1026,8 @@ =cut sub prefix { - my $p = shift or return; + my $p = shift; + return @_ unless defined( $p ); return map { $p . $_ } grep { defined($_) } @_; } @@ -1034,7 +1040,8 @@ =cut sub suffix { - my $s = shift or die "suffix needs string as first argument"; + my $s = shift; + return @_ unless defined( $s ); return map { $_ . $s } grep { defined($_) } @_; } @@ -1047,8 +1054,10 @@ =cut sub surround { - my $p = shift or die "surround need prefix as first argument"; - my $s = shift or die "surround needs suffix as second argument"; + my $p = shift; + my $s = shift; + $p = '' unless defined( $p ); + $s = '' unless defined( $s ); return map { $p . $_ . $s } grep { defined($_) } @_; }