diotalevi has asked for the wisdom of the Perl Monks concerning the following question:
The most common way to compare object identity in perl is to to a numeric comparison of the object because that examines the memory address for the object. This doesn't work if the object has just passed out of scope - I want to be able to compare identity between two objects which may not both be scope simultaneously. I'd like to write something like this in some test code but as is it isn't sane because if the first object really went out of scope and was recycled then object #2 might just occupy the same slot. Similarly, perhaps object #1 was also stashed somewhere else and *was* still in existance so the identity check would be true. How do I disambiguate this? I want to be able to verify that a new object is not the same object as a potentially destroyed previous object.
my $o1_ident; { my $o1 = object->new; $o1_ident = 0 + $o1; } my $o2 = object->new; my $o2_ident = 0 + $o2; ok( $o1_ident != $o2_ident );
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Object identity?
by broquaint (Abbot) on Jun 20, 2003 at 12:48 UTC | |
|
Re: Object identity?
by adrianh (Chancellor) on Jun 20, 2003 at 12:58 UTC | |
by diotalevi (Canon) on Jun 20, 2003 at 13:03 UTC | |
by adrianh (Chancellor) on Jun 20, 2003 at 15:29 UTC | |
by diotalevi (Canon) on Jun 20, 2003 at 15:50 UTC | |
|
Re: Object identity?
by graff (Chancellor) on Jun 21, 2003 at 00:14 UTC |