|
|
| go ahead... be a heretic | |
| PerlMonks |
What's wrong with always quoting "$vars"?by faq_monk (Initiate) |
| on Oct 08, 1999 at 00:20 UTC ( #606=perlfaq nodetype: print w/ replies, xml ) | Need Help?? |
|
Current Perl documentation can be found at perldoc.perl.org. Here is our local, out-dated (pre-5.6) version: The problem is that those double-quotes force stringification, coercing numbers and references into strings, even when you don't want them to be. If you get used to writing odd things like these:
print "$var"; # BAD
$new = "$old"; # BAD
somefunc("$var"); # BAD
You'll be in trouble. Those should (in 99.8% of the cases) be the simpler and more direct:
print $var;
$new = $old;
somefunc($var);
Otherwise, besides slowing you down, you're going to break code when the thing in the scalar is actually neither a string nor a number, but a reference:
func(\@array);
sub func {
my $aref = shift;
my $oref = "$aref"; # WRONG
}
You can also get into subtle problems on those few operations in Perl that
actually do care about the difference between a string and a number, such
as the magical Stringification also destroys arrays.
@lines = `command`;
print "@lines"; # WRONG - extra blanks
print @lines; # right
|
|