In Perl if (defined $var and $var ne '') and if( $var) are NOT equivalent. Try it with $var=0. Conversely if you test on $var!=0 all strings that cannot be converted to numbers will fail the test (with a warning if you have them on).
So you must know exactly what your variable contains (number or string, whether it can be undef) so you can test accordingly.
I usually just write if( $var) and let Perl take care it. I believe that's easier to read, and that's the most common style in Perl.
Very often, actually, the proper test ends up being if( defined $var). That's where perl's new (in 5.10) // operator comes in handy. $var= $val // $default or often $var //= $default, where $var will receive $default only if $val (resp $var) is undef.