... you should only do this if you are sure that the internal storage is compatible.
As an illustration of this important point, consider:
>perl -wMstrict -le
"use 5.014;
;;
package Foo {
sub new { return bless { fooble => 'wonkem' }; }
sub mungeit {
my $self = shift;
my ($m) = @_;
return $self->{fooble} .= $m;
}
}
;;
package Bar {
sub new { return bless { fooble => 1729 }; }
sub mungeit {
my $self = shift;
my ($m) = @_;
return $self->{fooble} += $m;
}
}
;;
my $foo_obj = Foo->new;
my $bar_obj = Bar->new;
;;
print $foo_obj->mungeit('zoot');
print $bar_obj->mungeit(42);
;;
bless $foo_obj, 'Bar';
;;
print $foo_obj->mungeit('zonk');
"
wonkemzoot
1771
Argument "zonk" isn't numeric in addition (+) at -e line 1.
Argument "wonkemzoot" isn't numeric in addition (+) at -e line 1.
0
trizen: In fact, the whole business of re-bless-ing an object into another class is highly suspicious. Is this an instance of an XY Problem? What are you really trying to do?
|