in reply to Re^2: Modifying/extending a superclass' data
in thread Modifying/extending a superclass' data

I can't even access it to make a copy, can I? - no way of making %M::E::A::ENTITIES ?

Think of a "my" as similar to "private" data in Java (if I remember my Java, that is). It's pretty much totally inaccessable without using XS to violate the encapsulation and troll through the Perl guts directly. Your best bet may be to do a copy/paste into your subclass and modify it that way. Ugly hack and dependency, but probably the sanest alternative if you really need it.

-xdg

Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.

  • Comment on Re^3: Modifying/extending a superclass' data

Replies are listed 'Best First'.
Re^4: Modifying/extending a superclass' data
by kiz (Monk) on Nov 17, 2005 at 14:36 UTC
    Your best bet may be to do a copy/paste into your subclass and modify it that way.

    Yeuck! - there are over two thousand entries in that hash.. <grin />

    I've changed %M::E::ENTITIES to have "our" scope - which seems to work. My only worry is missing some problem about memory leak, an oversized memory foot-print, or soke form of data-clash - but the scoping should take care of that...

    :-)



    -- Ian Stuart
    A man depriving some poor village, somewhere, of a first-class idiot.

      Oh! I wasn't clear that you controlled both. You could do a form of protected access that returns a reference to the structure. (Breaking encapsulation in a limited way).

      # in MathML::Entities my %ENTITIES; sub _get_entity_hash { my $caller = caller; if ( $caller->isa("MathML::Entities") ) { return \%ENTITIES; } else { die "_get_entity_hash can't be called from $caller" } }

      -xdg

      Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.

        Oh! I wasn't clear that you controlled both.

        It's Perl... it's a text-file.. I can edit it ;-)

        The accessor class is interesting though... thanks!



        -- Ian Stuart
        A man depriving some poor village, somewhere, of a first-class idiot.