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


in reply to Re: My first perl script is working, what did I do wrong?
in thread My first perl script is working, what did I do wrong?

Multiple Variable Declaration can be broken down from:

my $headerLine= -1; my $prtIndex = -1; my $shpIndex = -1; my $clrIndex = -1; my $sizIndex = -1;

to:

my ($headerLine, $prtIndex, $shpIndex, $clrIndex, $sizIndex) = -1;

No, this won't do what you expect. Given:

  my ($a, $b, $c) = -1;

only $a will receive the value ($b and $c will be undef). You can, however, use:

  my ($a, $b, $c) = (-1, -1, -1);

That being said, I've found more often than not, when I have to start assigning the same value to a bunch of variables, there's probably a deeper design decision I need to question.

In this case, -1 is used as some sort of magic value to indicate the state of something. Although even better refactoring can be done in this case, at the very least leaving the variables as undef provides better information, especially if any of those variables might legitimately contain -1 in the future.

Replies are listed 'Best First'.
Re^3: My first perl script is working, what did I do wrong?
by Anonymous Monk on Nov 08, 2012 at 23:48 UTC
    Thanks for the replies. In case you couldn't tell, I typically program in C (and sometimes Java, although really when I use Java I treat it a lot like C). I will definitely keep these pointers in mind as I continue to learn how to hack together Perl scripts.
      ... and apparently it didn't post the above as me. Whatever.
Re^3: My first perl script is working, what did I do wrong?
by marquezc329 (Scribe) on Nov 09, 2012 at 00:29 UTC

    Thank you for your correction rjt. Crackers2 also notified me of this mistake. I edited my response to reflect an alternate method of accomplishing this.