in reply to No braces

Never bugged me a bit. It's no different from:

$x = 8 if $x == 7;

Which is valid Perl. What Perl won't allow you to do is run an else/elsif after that:

$x = 0 else;

Just won't work. If anything, the Perl form is worse because the conditional is showing up in code after the statement, but is being executed first. As shown above, it's also less flexible.

AFAIK, it works in Java and C because those languages define that a statement comes after an if/else/while/whatever, and that a block is a statement which clusters one or more other statements. Perl's parsing rules are, umm, different.

----
: () { :|:& };:

Note: All code is untested, unless otherwise stated