今天我们介绍perl的另一种基础数据结构---数组。
数组, 顾名思义就是数据的组合, 数组用来存储一系列的标量值。在Perl中, 数组使用@作为标识符。
定义/申明一个数组和标量类似:
my @users;
在讲数组赋值前, 我们先引入另一个定义---列表直接量。列表直接量是用逗号分隔的一系列独立值:
("a", "b", "c");(1, 2, 3, 5);给数组赋值时, 我们有2种方法, 一种即使用列表直接量:
my @users = ("a", "b", "c");my @users = qw(a b c);以上2个是等效的, qw为Perl内置函数, 可以统一引起字符串。
在Perl中,数组中的元素是按照一定顺序来进行存放的, 因此, 我们也可以通过数组下标来给数组赋值, Perl中下标都是从0开始计算的:
my $users[0] = "a";my $users[1] = "b";my $users[2] = "c";从数组中取值和赋值是一样的:
my $user1 = $users[0];my $last_user = $users[-1]; Perl是支持负数下标的, 负数下标就是从最后一个元素开始, 反向读取。
数组的长度同样有2种常用方式:
my $length = @users + 0;my $length = scalar(@users);具体原理后面讲数据环境的时候会解释。
常见的数组相关操作方法:
push--pop
pop和push是一组互逆的操作, push是将一个标量(也可以是数组,以及其他数据结构)放入到数组的末尾, pop则是将数组的最后一个元素取出。
my $new_user = "D";push @users, $new_user;my $last_user = pop @users;需要注意的是,pop取出的元素, 会从数组中删除, 通过下标来读取的元素, 仍然在数组中。
unshift--shift
push/pop是在数组的尾部来进行处理, 那么对应的在数组头部来进行处理, 我们就使用unshift/shift。
数组相关最佳实践:
数组的命名规则同标量类似, 只是数组的名称一般使用复数, 以此来和标量的单个元素进行区分。

