in reply to Uninitialized value

ravendarke says :
returns 16, even though the value was defined as 0.


You've almost stumbled onto an answer by yourself, ravendarke.
use warnings; my $junk; print 1+$junk; print "\n"; #Returns an unitialized value warning, as expected. print 1+(defined($junk) ? $junk : 0); print "\n"; #Returns 1, no warning. $junk = 11; print 1+(defined($junk) ? $junk : 0); print "\n"; #Returns 12, seems to do what I want, but... $junk=0; print 1+(defined($junk) ? $junk : 15); print "\n"; # now prints out 1.
The secret sauce is in the definedness of your variable.