when the perl5-porters update the documentation, and say "don't do that its undefined", then they mean it don't do that even if does something you expect 80% of the time :)
For example see Re^3: question 1st - undefined behaviour (perlop)
I'm sure there is even more similar nodes/posts of wisdom to be found for Perl::Critic::Policy::Variables::ProhibitConditionalDeclarations ... trust the documentation
update:
my $cache = undef if undef;
Re^4: Managing capture
"my $p = value if condition()" as bad|deprecated as "my $p if 0" (Naughty indeed)
This Week on p5p 2000/05/21 my $x if 0; Trick
my $x if 0; Trick my @array = () if 0;
state variables, first draft - nntp.perl.org
state
In reply to Re^5: postfix syntax enlightenment ( y $x if 0; Trick my @array = () if 0; conditional declaration; state )
by Anonymous Monk
in thread postfix syntax enlightenment
by RobertCraven
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |