@foo # array @Foo::bar # array @$foo # array @{ $bar } # array @{ $blah{blah}[1] } # array @list # array with a confusing name $array # scalar (possibly a reference) [ ... ] # scalar (reference to anonymous array) \@array # scalar (reference to named array) *foo{ARRAY} # scalar (reference to the package global @foo) print @array # list (print "gets" a list, not an array, # because @array is in list context) return @array # list! (again, array in list context) \(1, 2, 3) # list of references, not a reference to a list @foo = # array map { $_ + 1 } # list map { s/\n//g } # list @bar # list! (array in list context)