The only kind of simple statement is an expression evaluated for its
side effects. Every simple statement must be terminated with a
semicolon, unless it is the final statement in a block, in which case
-the semicolon is optional. (A semicolon is still encouraged there if
-the block takes up more than one line, because you may eventually add
+the semicolon is optional. (A semicolon is still encouraged if the
+block takes up more than one line, because you may eventually add
another line.) Note that there are some operators like C<eval {}> and
C<do {}> that look like compound statements, but aren't (they're just
TERMs in an expression), and thus need an explicit termination if used
=head2 Truth and Falsehood
-A false value is C<undef>, the number 0, the string C<'0'> and the
-empty string C<''>. Note that unlike some languages, these are three
-distinctly different values. A true value is everything which is not
-false.
+The number 0, the strings C<'0'> and C<''>, the empty list C<()>, and an
+explicit C<undef> are all false in a boolean context. Every other value
+is true.
-Note that while 0, 0.0 and C<'0'> are false, C<'0.0'> is true.
+Note that while 0, 0.0 and C<'0'> are false, C<'0.0'> and C<'0e0'> are
+true, but evaluate to 0 in a numeric context.
=head2 Statement Modifiers
}
if (ckWARN_d(WARN_INTERNAL))
Perl_warner(aTHX_ packWARN(WARN_INTERNAL),
- "Attempt to free unreferenced scalar SV 0x%"UVxf,
+ "Attempt to free unreferenced scalar: SV 0x%"UVxf,
PTR2UV(sv));
return;
}
# 3**30 < 2**48, don't trust things outside that range on a Cray
# Likewise other 3 should not overflow 48 bits if I did my sums right.
-my @pow = ([3,30,1e-14],
- [4,32,0],
- [5,20,1e-14],
- [2.5, 10,,1e-14],
- [-2, 69,0],
- [-3, 30, 1e-14],
+my @pow = ([ 3, 30, 1e-14],
+ [ 4, 32, 0],
+ [ 5, 20, 1e-14],
+ [2.5, 10, 1e-14],
+ [ -2, 69, 0],
+ [ -3, 30, 1e-14],
);
my $tests;
$tests += $_->[1] foreach @pow;