in reply to Re: CarTalk Puzzler
in thread CarTalk Puzzler

print 0+sqrt!~/\./for 1..2e4
As a slight drift, how did I manage to get away without a space before the 'for'?
Because you only need spaces if the concatenation of the two tokens creates a longer leading token. But in Perl, no token starts with '0f', hence perl knows '0' is a token, and 'for' another.
Perl --((8:>*

Replies are listed 'Best First'.
Re^3: CarTalk Puzzler
by reasonablekeith (Deacon) on Nov 18, 2005 at 15:41 UTC
      
    print 0+sqrt!~/\./for 1..2e4
    very cool lateral thinking.

    cheers for the replies re the space thing. I never really give any thought to the parser. How do you pick this stuff up without delving into the internals? (which I don't think I'm ready for)

    ---
    my name's not Keith, and I'm not reasonable.
      How do you pick this stuff up without delving into the internals?
      That's how most of the important lexers/parsers work: they find the next token in a greedy way. That's why in most languages white space is only needed to separate tokens if concatenating them causes a different (and unwanted) way of parsing.

      It's nothing specific to Perl, nor do you need to know anything about the internals.

      Perl --((8:>*