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

Reply via email to