天天看点

标量,列表和上下文

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])(列表切片不允许被进行标量赋值)

继续阅读