We don't bite newbies here... much | |
PerlMonks |
Re: converting from switch to given-whenby Athanasius (Archbishop) |
on Sep 25, 2012 at 03:03 UTC ( [id://995481]=note: print w/replies, xml ) | Need Help?? |
It seems to be something to do with (de)referencing the constant. Actually, running with perl -MO=Deparse shows that wxID_Yes, wxID_No, and wxID_CANCEL are subroutines:
And the documentation says that “A user-defined subroutine call or a method invocation” is treated as a boolean, meaning “true” if it returns any non-zero value! (You can easily confirm this by making your own subroutines that return 0 and 1, say, and you will see that the first when clause with the non-zero-returning sub is always successful.) Update: Here’s the code I used for experimenting:
Output:
So, it looks as though this (strange) behaviour is exactly as expected (until changed in a later version of Perl?) In the meantime, either of the workarounds you suggest will get the job done. I haven’t found a “simpler/cleaner syntax.” :-( Hope that helps, Athanasius <°(((>< contra mundum
In Section
Seekers of Perl Wisdom
|
|