use strict; use warnings; no warnings 'uninitialized'; ## not recommended use Scalar::Util 'dualvar'; my ($test, $test2); print sprintf('1: %s', $test), "\n"; if (not defined $test) { $test = dualvar(0, 'OK'); print sprintf('2: %s', $test), "\n"; } print sprintf('3: %s', $test > 1 ? $test : undef), "\n"; if (not defined $test2) { print sprintf('4: %s', $test), "\n"; } __END__