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


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 ... }