网站首页 > 基础教程 正文
今天我们介绍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。
数组相关最佳实践:
数组的命名规则同标量类似, 只是数组的名称一般使用复数, 以此来和标量的单个元素进行区分。
猜你喜欢
- 2025-05-08 最全的 Vue 面试题+详解答案(vue的一些面试题)
- 2025-05-08 Array类型简介(array常用的几种方法)
- 2025-05-08 2021最全VUE面试题,奥利给(vue 面试题 2021)
- 2025-05-08 Vue3基础难点总结(vue3技巧)
- 2025-05-08 使用Axios 拦截器解决「 前端并发冲突 」 问题
- 2025-05-08 浅析vue封装自定义插件(vue自己封装组件)
- 2025-05-08 如何在控制台打印出一个表格?cli-table3了解一下
- 2025-05-08 ES6史上最全数JS数组方法合集-02-数组操作
- 2025-05-08 3个 Vue $set 的应用场景(vue中的set方法)
- 2025-05-08 「2022」打算跳槽涨薪,必问面试题及答案——VUE3 篇
- 最近发表
-
- 掌握SpringBoot-2.3的容器探针:实战篇
- kubernetes基础知识之驱逐节点(k8s驱逐节点后恢复)
- Linux环境中制作网络哨兵Sentinel Docker镜像
- k8s之配置CNI网络(k8s 网络配置)
- docker实战之:镜像更新(docker 镜像升级替换)
- 离线在docker镜像方式部署ragflow0.17.2
- Linux日常小技巧Docker打包(docker打包lnmp)
- 使用dockerfile构建docker镜像(docker通过dockerfile构建镜像命令)
- 「云原生」Containerd ctr,crictl 和 nerdctl 命令介绍与实战操作
- Kylin安装Dify(kylin安装部署)
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- pythonif (68)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)