I have the code below in a module I'm writing (Complete module is at <www.thepierianspring.org/CPAN-Metadata-0.00_01.tar.gz>). The three methods _mk_*_accessor are nearly identical. I would like to simplify this code, but I want to avoid a giant eval since it makes code more difficult to maintain. Any ideas?
Thanks, Randy.
diff -y array hash only; see attachment in-line...)
-Bill- __Sx__________________________________________ http://youve-reached-the.endoftheinternet.org/
Differences only -
sub _mk_array_accessor { | sub _mk_hash_accessor { my @arg = @_; | my %arg = @_; my $ret = $self->{_metadata}{$attr} || []; | my $ret = $self->{_metadata}{$attr} || {}; if (@arg) { | if (%arg) { my $is_valid = eval "\$spec->V_$attr([EMAIL PROTECTED])"; | my $is_valid = eval "\$spec->V_$attr(\%arg)"; if ($is_valid) { if ($is_valid) { $self->{_metadata}{$attr} = [EMAIL PROTECTED]; | $self->{_metadata}{$attr} = \%arg; carp "Invalid value for $attr: [EMAIL PROTECTED]"; | carp "Invalid value for $attr: {%arg}"; $self->{_metadata}{$attr} = [EMAIL PROTECTED]; | $self->{_metadata}{$attr} = \%arg; return @$ret; | return %$ret;
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>