On Fri, Apr 12, 2002 at 04:00:37PM +0100, Piers Cawley wrote: > <X-posting to perl6-language> > [EMAIL PROTECTED] writes: > > As for "cleanness", this is my interpretation of how perl6 is going > > to work: > > > > %foo = (); > > if %foo {"key"} {print "Hello 1"} > > #### > > %foo = (); > > if %foo{"key"} {print "Hello 2"} > > #### > > %foo = (); > > if %foo{"key"}{print "Hello 3"} > > > > Case 1 will print "Hello 1"; this is a block after the if statement. > > No, it will be a syntax error. The first closing brace does not end > the statement, probably something like "Block seen when keyword > expected".
Now I am confused. In perl6, we can leave off the the parenthesis around a condition, and I hope that it isn't required to have an 'elsif' or 'else' block. Why isn't if %foo {"key"} {print "Hello 1"} equivalent with the perl5 syntax: if (%foo) {"key"} {print "Hello 1"} Which keyword is it expecting? > > Case 2 will not print anything. The print is in the 'then' part > > of the if. > > Correct. > > > Case 3 will be a syntax error - an if statement with a condition, > > but not block. > > It won't be a syntax error *yet*. If there's a block immediately > following then that will be treated as the 'then' block. If it's the > end of file, or a nonblock, then it'll be a syntax error. Did the code show anything following it? No? Well, then assume it isn't there. ;-) Next time I'll show this to someone, I'll add a semicolon. Abigail