perl5.10中,标量变量(比如$a)、数组变量(比如@b)、哈希变量(比如%c)、列表直接量(比如(1,2,3))在标量/列表上下文中的输出值及其与赋值操作符的关系。
perl的表达式在不同的上下文中含义是不同的, 比如:
@arr = qw(a1, a2, a3);
@arr = reverse @arr;
$arr = reverse @arr;
@arr为a3, a2, a1.
$arr为1a2a3a.
perl也支持将列表上下文强制转换为标量上下文, 采用scalar函数
print @arr; #结果为a1,a2,a3
pirnt scalar @arr;#结果为3, @arr的长度.
perl上下文中有一个特殊的变量$_, 为默认变量, 比如在foreach中, $_为列表的每个标量.
另外有几个基本概念:
标量变量是标量
数组变量是数组
数组元素是标量(比如$b[1])
数组切片是列表(比如@b[1]、@b[1,2])
哈希变量是哈希
哈希变量的“键”与“值”都是标量
哈希切片是列表(比如%c{"er","yi"})
似乎没有列表元素的概念或表达式。
列表直接量是列表
列表切片是列表(比如(1,2,3)[1])(列表切片不允许被进行标量赋值)