On 28 Jul 2004 at 13:24, Glenn Linderman wrote: > On approximately 7/28/2004 12:47 PM, came the following characters from > the keyboard of Alan Stewart: > > > Win32::MB_ICONQUESTION is coded as a sub, so the syntax with the & works at the > > first > > level. It appears that the extra level of eval in PAR makes it look like the > > equivalent > > of: > > > > $flags = 4 | & 32; > > > > which is not legal, and gives the error: > > > > Undefined subroutine &main::32 called at ... > > > > I don't know how this happens and still gives the name MB_ICONQUESTION in the > > error > > message. > > Since I get MB_ICONQUESTION in the error, this probably isn't what > happened. What happened is the code in question doesn't usually get > executed, and I didn't have a "use Win32;" anywhere. Due to other PAR > issues, the code got executed unexpectedly, and the lack of use Win32 > reared its head. >
OK, but the & is still not needed. > > Anyway, you can't rely on the constant being implemented as a sub, and as Rob > > said, it > > is not neccessary. > > Really? How else can one implement constants and not make them a sub? > I was under the impression that even "use constant..." created subs... > I am just waving my hands here to say "Watch out for TMTOWTDI". In my version of Win32.pm, it's not even done as a "use constant ...", but as a straight out sub definition. If it looks like a constant, use it like a constant. Who know what tricks the Win32 authors have up their sleeve for the next version? Maybe they pre-process or something... Alan Stewart
