That (and there was a similar suggestion above as well) doesn't help his problem.
my $foo = ' '; # or my $foo = '';
$foo = getFoo();
if ( $foo eq "true" ){ ... } # this will warn if $foo is undef
$foo = $dbh->selectrow_array("select x from blah limit 1");
if ( $foo eq "true" ){ ... } # this will warn if $foo is undef
In these cases, the original default value doesn't matter because it's overwritten later by a 'third party' (some sub or dbh call), and the hint to the Maintainer doesn't help cause it's something else (e.g. some db value) that's being stored.