On 5 Dec 2001, at 12:40, Piers Cawley wrote:

> "Bernie Cosell" <[EMAIL PROTECTED]> writes:
> 
> > On 5 Dec 2001, at 18:04, [EMAIL PROTECTED] wrote:
> >
> >> Piers Cawley wrote:
> >> > I think the particular 'creative in the extreme' entry that Andrew was
> >> > referring to was my head.pl that printed 10 lines then crashed using:
> >> >
> >> >     #!perl -p
> >> >     11..&

> > Me, too. Is that actually exploiting a bug in perl? [which is legit,
> > of course -- I just seeking some clarification/understanding here].
> > It seems that "&<ENDOFFILE>" is interpreted as a subroutine call to
> > a subtroutine with no name.
> 
> It depends on how the -p works. And it's (sort of) documented.

I realize that, but still it seems odd that the construct:
    &;
actually calls a null-named subroutine rather than giving you a syntax error.  
For example, if I write this perl program:
  #!perl
  &;
no -p trickery or the like, I'd have *assumed* that that would get me a syntax 
error.  So I was just musing that it looks like at the very least an un- [semi-
?  hidden-?] kind-of-anomaly that Perl doesn't give a syntax error on that. 
[sort of like when I first learned of the hack in the -w stuff for the string 
"0 but true", which, AFAIK, is also undocumented]

Meta-question: since Perl is content to try to *call* '&main::;' is there some 
trickery to *DEFINE* such a subroutine?  For example, trying:
   main:: { die; }
gets you what I would have expected in the '..&' case: a syntax error for a 
missing subroutine name.

   /Bernie\
-- 
Bernie Cosell                     Fantasy Farm Fibers
mailto:[EMAIL PROTECTED]     Pearisburg, VA
    -->  Too many people, too few sheep  <--          

Reply via email to