Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

Re: my $x or my ($x)

by davidrw (Prior)
on Apr 04, 2006 at 13:24 UTC ( #541142=note: print w/replies, xml ) Need Help??

in reply to my $x or my ($x)

for the behavior, besides all of the above posts, also consider this simple example:
my @x = ('a' .. 'e'); my $y = @x; my ($z) = @x; warn $y; # 5 warn $z; # 'a'
Because, in scalar context, an array variable will evaluate to it's length.

I'd say that, in general, it's "more appropriate" to declare in list context only when list context is actually needed -- e.g. declaring multiple variables at once, or sometihng like the my ($z) = @x; above where you're working w/ an array on the RHS.

Another common use of list context:
function foo { my ($bar, $stuff, $blah) = @_; # get the arguments ... }

Replies are listed 'Best First'.
Re^2: my $x or my ($x)
by johngg (Abbot) on Apr 04, 2006 at 16:45 UTC
    I know that it is really not necessary but I have got into the habit when counting elements in a list of doing

    my $elems = scalar @list;

    rather than

    my $elems = @list;

    just to make it crystal clear for "those that come after" what is going on. That the question gets asked demonstrates why such practices can be helpful.