Hello,
There is a good explanation in perlfaq4:
What is the difference between a list and an array?
An array has a changeable length. A list does not. An
array is something you can push or pop, while a list is a
set of values. Some people make the distinction that a
list is a value while an array is a variable. Subroutines
are passed and return lists, you put things into list con-
text, you initialize arrays with lists, and you foreach()
across a list. "@" variables are arrays, anonymous arrays
are arrays, arrays in scalar context behave like the num-
ber of elements in them, subroutines access their argu-
ments through the array "@_", and push/pop/shift only work
on arrays.
As a side note, there's no such thing as a list in scalar
context. When you say
$scalar = (2, 5, 7, 9);
you're using the comma operator in scalar context, so it
uses the scalar comma operator. There never was a list
there at all! This causes the last value to be returned:
9.