http://qs321.pair.com?node_id=662056


in reply to Generating accessors and mutators for complex structures inside the object

KSURi,

Having the key Hashref in there may be an indication of a design issue. You may be trying to solve implementation problems stemming from a design problem. Would you care to tell us more about your objects? What other keys are there in your object than Hashref? How about some sample actual data?

Replies are listed 'Best First'.
Re^2: Generating accessors for complex structures inside the object
by KSURi (Monk) on Jan 12, 2008 at 14:49 UTC
    Sure, here it is. This is my class constructor which sets primary attributes:
    sub new { my $class = shift || __PACKAGE__; my $self; if ( scalar @_ == 1 ) { ( $self->{RemoteAddr}, $self->{RemotePort} ) = split( ':', shi +ft ); } else { $self = {@_} } foreach (qw(RemoteAddr RemotePort)) { confess $_ . " was not cofigured" unless $self->{$_}; } $self->{FuzzLevel} ||= 1; $self->{Debug} ||= 0; $self->{Path} ||= 'report.html'; $self->{Report} ||= 0; $self->{Ready} = 0; $self->{Socket} = undef; $self->{LastSentFinger} = undef; bless( $self, ref $class || $class ); }
    And these are some additional attributes which will be added later by another sub:
    $self->{FuzzData} = { _Letters => { __data => [ # a lot of data here ], __example => qr/(\w{1})/ }, _Formats => { __data => [ # again data ], __example => qr/(%\w{1})/ }, _Numbers => { __data => [ # and again ], __example => qr/(\d{1)}/ } }; $self->{ProtoData} = { _ActionData => { __ActionCmd => [], __ActionExit => undef, __ActionTemplate => undef }, _LoginData => { __LoginUser => undef, __LoginPass => undef, __LoginSuccess => undef, __LoginTemplate => undef }, _ProtoPresets => { ftp => \&{ $self->_LoadPresetFTP }, http => \&{ $self->_LoadPresetHTTP }, pop3 => \&{ $self->_LoadPresetPOP3 }, smtp => \&{ $self->_LoadPresetSMTP } } };
    So, you can notice that attributes are grouped topically
Re^2: Generating accessors for complex structures inside the object
by KSURi (Monk) on Jan 23, 2008 at 18:55 UTC
    Ok, seems you were right) I've redesigned the object structure and removed all the nested structures. After that it works fine, thank you!