Most people are willing to forget about the existence of overloaded objects. The complaint is that keys returns everything in stringified form. So if elements of the hash included anonymous hashes (for instance), you would have a string indicating the hash, but you would no longer have a reference to the hash.
Using values does not protect you from overload collisions, but it does protect you from returning stringified versions of everything. | [reply] |
Yes, overload can break this, and yes, I am willing
to forget about that. However, my solution treats
undef() and "" as the same
item, returning only one of them if given both -- which
is perhaps not too good ...
Likewise, if the parameter list contains both a
(well-behaved) ref and the stringified version of
that ref, my sub will return only one of them.
These problems are easily fixed, though the new sub
loses some of those golf-like qualities -- it's not
quite as neat:
sub x{
values%{{map{(ref$_?1:defined$_?2:3).$_,$_}@_}}
}
The Sidhekin, wilfully ignoring overload | [reply] [d/l] [select] |
OK, got it now... it was solving for a different (and more onerous) problem than I saw. However, the original question did say 'whatever elements' (his bolding, not mine)....., so perhaps a more formal definition of 'unique' and 'whatever' is needed.
-Blake
| [reply] |