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 );
In reply to Object identity? by diotalevi
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |