http://qs321.pair.com?node_id=11104561


in reply to Python 'is' command

Are there any other examples like this that I can follow?
Yes! See the comprehensive is_equal method in perl5i::Meta (source). That's what people usually have in mind when they talk about equality.

All the solutions shown in this thread involving references are not general enough due to wrong assumptions, see FAQ in Object::ID. (I think the original Python behaviour also suffers from the problem, but I haven't checked.) Again, the correct solution is also part of perl5i (source).

perl5i is full of "done right" pieces of code. Monks, study it, even if you never intend to run it.

Replies are listed 'Best First'.
Re^2: Python 'is' command
by syphilis (Archbishop) on Aug 16, 2019 at 11:21 UTC
    All the solutions shown in this thread involving references are not general enough due to wrong assumptions, see FAQ in Object::ID.

    Really ? ... *all* of them ?
    I think the OP is concerned about determining whether 2 existent objects are the same, not whether a current object has the same "address" as an obsolete one.
    So long as 2 reference addresses of currently existent objects are being compared, then I don't really see the relevance of the FAQ in Object::ID.

    Cheers,
    Rob
Re^2: Python 'is' command
by LanX (Saint) on Aug 16, 2019 at 11:34 UTC
    > see FAQ in Object::ID

    Interesting but not relevant here.

    The OP wants to compare two existing objects with an is operator.

    References can't be reused if the objects haven't been garbage collected yet.

    On a side note: why should one want to keep track of numeric or string representations of ref-adresses?

    Keeping the original ref in a hash value would keep it protected from destruction.

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery FootballPerl is like chess, only without the dice