«if», «else» and «while» are keywords part of "if" statements and "while" statements. Flow control statements don't take semicolons.
while ( COND ) BLOCK
if ( COND ) BLOCK
The «if» and «while» keywords are also found in statement modifiers. Statements with statement modifiers do take a semicolon.[1]
EXPR while COND;
EXPR if COND;
eval and map are "functions" (named operators). Function calls do no take semicolons.
if ( !eval { f() } ) { ... }
But they may be found in statements which do use a semicolon.
my $x = eval { f() }
or ...;
This includes simple statements.[1] These are statements that consist of nothing but an expression.
EXPR;
The statement you gave is an example of a simple statement, and so is the «or»-using statement above.
C, C++, C#, JavaScript and Java all work this way.
- The semicolon can be omitted if it terminates the last statement of a block or file.
Updated to elaborate.
|