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>
