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