In practice, very little except for the warning.
>perl -we"@x = @x[1]"
Scalar value @x[1] better written as $x[1] at -e line 1.
Use $ unless you mean to fetch more than one element from the array at time.
my $ele = $array[1]; # Array index
my @eles = @array[1,2,3]; # Array slice
Think of it this way: The sigil indicates the kind of value being returned. If you want a scalar, use the scalar sigial ($). If you want an list, use the array sigil (@). While Perl won't care in most situations, it'll signal your intent to the next person to read your code.