Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re^3: my $x or my ($x)

by ptum (Priest)
on Apr 04, 2006 at 13:39 UTC ( #541144=note: print w/ replies, xml ) Need Help??


in reply to Re^2: my $x or my ($x)
in thread my $x or my ($x)

One common mistake that is made when assigning to a collection of scalars is this:

my ($one, $two, $three, $four) = 0;

People tend to think that all four variables are initialized, but really only $one is set to zero, the rest are still undef. You'd have to explicitly set each variable to achieve that result:

my $one = my $two = my $three = my $four = 0;

... or alternatively:

my ($one, $two, $three, $four) = (0,0,0,0);

But as was stated elsewhere, this lacks readability for large collections of scalars. In general, I tend to declare my variables and either initialize them to zero or leave them undefined, then assigning their values in later statements. I hate getting warnings about variables being undef when evaluating in a conditional statement.


No good deed goes unpunished. -- (attributed to) Oscar Wilde


Comment on Re^3: my $x or my ($x)
Select or Download Code
Replies are listed 'Best First'.
Re^4: my $x or my ($x)
by eff_i_g (Curate) on Apr 04, 2006 at 15:35 UTC
    Just a quick addition to ptum's. I would write:
    my ($one, $two, $three, $four) = (0,0,0,0);
    as
    my ($one, $two, $three, $four) = (0) x 4;

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://541144]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (7)
As of 2015-08-01 00:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (285 votes), past polls