./perl/test/irc/reload.pl

download original
# <finite> i mean i've got an object of class Blah::Storable. There is a
#           reference to it in an array, in another object. There is an object
#           method in Blah::Storable that needs to replace $self with an object
#           read from disk. After doing that, the object (when accessed from the
#           place that called the object method to load from disk, which is
#           outside the module entirely) is what I want, replaced.
# <finite> but in the array of object refs, I still see the old object.

package Blah::Storable;

sub new {
    bless { foo=>bar, baz=>42}, shift;
}


sub replace {
    my $self = shift;
    my $loadedObject = { foo=>hello, baz=>83};
    %{$self}=%{$loadedObject};
}




package main;

my $obj = Blah::Storable->new;

my @arr=(foo,$obj,bar);
print $arr[1]->{baz}, "\n";  # prints 42

$obj->replace;

print $arr[1]->{baz}, "\n";  # prints 83

  
back to irc

(C) 1998-2017 Olaf Klischat <olaf.klischat@gmail.com>