In a message dated Tue, 27 Aug 2002, Luke Palmer writes:
> No, it's right. But it doesn't break that. In the grammar, C-like
> languages include (something like):
>
>       statement: expression ';'
>       statement: if expression block
>
> So an if _statement_ terminates itself.  The } on a line of its own is a
> special exception for closing braces that would also need a semincolon,
> as in C<eval> (that is, C<try>), et cetera.

It's a special exception *intended for* those cases.  But you can use it
elsewhere, e.g.

  my $addsub = {
     return @_[0] + @_[1];
  }
  my $subsub = { return @_[0] - @_[1] };

I assume that comments are transformed into \s prior to other rules
taking effect (aside from transformation of quotelikes using # as the
delimiter).  So I could put a comment at the end of the line containing
only the closing brace, and everything would still work.

Btw, putting on my stylist hat, I think the fluent Perl 6 programmer would
use C<sub> or C<< -> >> in the code above in order to clarify what's going
on there, don't you?  Or am I thinking like a Perl 5 programmer?

It would certainly help to make clear the difference between:

  my $foo = { bar => "baz" }; # Make hash

and:

  my $foo = sub { bar => "baz" }; # Make sub returning pair

Trey

Reply via email to