Not paying close attention to Perl’s definition of truth can sometimes lead to subtle bugs. Consider a simple scalar $x
that should contain a string exactly one character wide. If the original value of $x
can be undefined and you want to make sure it has a default value of a single space, do not do the following:
$x ||= ' ';
Why not? If $x
starts off as ‘0’, a permitted value, this line will change it to ' '
. Instead, do this
$x = ' ' unless defined $x;
Remember, 0
, '0'
, ''
, and undef
all evaluate to Perl’s notion of false.