http://www.perlmonks.org?node_id=369295


in reply to To initialise or not to initialise?

kiat, another good question, one that I have thought about often. Here's where I'm at now. I no longer initialize with a value, unless that value is to be used immediately and/or it helps me read what I'm doing:
my $ctr = 0; for ( 0 .. 5 ) { if ($foo[$_] eq $bar) { $ctr++; } }
I have found there is a difference between:
my $variable;
and
my $variable = "";
or
my $variable = 0;
depending on usage. In summary, I don't think there can be a hard a fast rule. Like many things, it depends on context and the readibility you need.

—Brad
"Don't ever take a fence down until you know the reason it was put up. " G. K. Chesterton

Replies are listed 'Best First'.
Re^2: To initialise or not to initialise?
by kiat (Vicar) on Jun 24, 2004 at 13:30 UTC
    Hi bradcathey,
    I have found there is a difference between:
    Do you mean the difference between being defined and undefined?
    my $var1; # not printed because $var1 is not defined print "var1: $var1\n" if defined $var1; my $var2 = ''; # printed with $var2 as an empty string # output var2: print "var2: $var2\n" if defined $var2; my $var3 = 0; # printed with $var3 set to 0 # output var3: 0 print "var3: $var3\n" if defined $var3;
    cheers,
      Precisely, thanks for clearing up the terminology. And I have to apologize for not being about to think of a good example, but I have found at times I need the undefined variable, as opposed to the defined, inferring a value.

      —Brad
      "Don't ever take a fence down until you know the reason it was put up. " G. K. Chesterton
        Ah okay.

        I thought it might be something to do with concatenation at first, which also shows a subtle difference:

        my $var1; print $var1 .= 'r', "\n"; # prints r my $var2 = ''; print $var2 .= 'r', "\n"; #prints r my $var3 = 0; print $var3 .= 'r', "\n"; #prints 0r
        :)