undef, the initial value and defined



$q = $x + 1;        # is 1 + warning as the default number is 0
$w = $y . "abc";    # is 'abc' + warning as the default string is ""
$z++;               # is 1 - no warning

You can check if the variable already has a value or if it still undef:


if (not defined $x) {   # to avoid warning
     $x = 0;
}
$x = $x + 1;