Perl语言之数组
Perl数组可以存储多个标量,并且标量数据类型可以不同。
数组变量以@开头。访问与定义格式如下:
#! /usr/bin/perl
@arr=("asdfasd",2,23.56,'a');
print "输出所有:@arr\n";
print "arr[0]=$arr[0]\n"; #输出指定下标
print "数组大小:".scalar @arr."\n";
$arr[0]=v97.98.99; #v字符串赋值
print "输出所有:@arr\n";
$arr[6]=89;#指定下标赋值
print "输出所有:@arr\n";
1.以qw开头定义数组
#! /usr/bin/perl
@arr=qw / 这是一个数组 123 456 890 "数组创建示例"/;
print "所有成员:@arr\n";
print "成员个数:".scalar @arr ."\n";
print "第一个成员:$arr[0]\n";
print "最后一个成员:$arr[-1]\n"; #-1表示最后一个成员$size=$#arr;#返回最大索引下标
print "size=$size\n";
print "arr[0]成员长度:".length $arr[0]; #一个中文3个字节
print "\n";
print "arr[1]成员长度:".length $arr[1];
print "\n";
运行示例:
[wbyq@wbyq 0709]$ ./1.pl
所有成员:这是一个数组 123 456 890 "数组创建示例"
成员个数:5
第一个成员:这是一个数组
最后一个成员:"数组创建示例"
size=4
arr[0]成员长度:18
arr[1]成员长度:3
2 数组序列号
#! /usr/bin/perl
@arr=(1..10);
print "数组成员个数:".scalar @arr ."\n";
print "所有成员:@arr\n";
print "最大访问下标:$#arr\n";
@arr=(a..z);
print "数组成员个数:".scalar @arr ."\n";
print "所有成员:@arr\n";
print "最大访问下标:$#arr\n";
$size=@arr;
print "数组成员个数:$size\n"
运行效果:
[wbyq@wbyq 0709]$ ./1.pl
数组成员个数:10
所有成员:1 2 3 4 5 6 7 8 9 10
最大访问下标:9
数组成员个数:26
所有成员:a b c d e f g h i j k l m n o p q r s t u v w x y z
最大访问下标:25
数组成员个数:26
3.添加和删除数组
Perl语言提供有从末尾插入成员、从头插入、从头取数据、从末尾取数据。
#! /usr/bin/perl
@arr=(1..10);
print "[line:".__LINE__."]数组成员个数:".scalar @arr ."\n";
$size=push (@arr,a,b,c,d);#在数组末尾加入a,b,c,d,并且输出成员个数
print "[line:".__LINE__."] size=$size\n";
print "[line:".__LINE__."]数组成员个数:".scalar @arr ."\n";
@arr2=qw\"12" "34" "56"\;
push (@arr,@arr2);#将数组arr2添加到arr末尾
print "[line:".__LINE__."]数组成员个数:".scalar @arr ."\n";
print "[line:".__LINE__."]输出所有成员:@arr\n";
$data=pop(@arr);#从末尾取元素,并且成员个数-1
print "[line:".__LINE__."]数组成员个数:".scalar @arr ."\n";
print "[line:".__LINE__."]data=$data\n";
$data=shift(@arr);#从首位置取元素,并且成员个数-1
print "[line:".__LINE__."]data=$data\n";
print "[line:".__LINE__."]数组成员个数:".scalar @arr ."\n";
$size=unshift(@arr,@arr2);#从首位置插入元素,并返回元素个数
print "[line:".__LINE__."]size=$size\n";
print "[line:".__LINE__."]数组成员个数:".scalar @arr ."\n";
print "[line:".__LINE__."]输出所有成员:@arr\n";
运行示例:
[wbyq@wbyq 0709]$ ./1.pl
[line:3]数组成员个数:10
[line:5] size=14
[line:6]数组成员个数:14
[line:9]数组成员个数:17
[line:10]输出所有成员:1 2 3 4 5 6 7 8 9 10 a b c d "12" "34" "56"
[line:12]数组成员个数:16
[line:13]data="56"
[line:15]data=1
[line:16]数组成员个数:15
[line:18]size=18
[line:19]数组成员个数:18
[line:20]输出所有成员:"12" "34" "56" 2 3 4 5 6 7 8 9 10 a b c d "12" "34"
4.数组成员截取
Perl中可以获取一个数组中的指定成员,再组合成一个新的数组。
使用示例:@buff=@arr[索引值];
数组索引需要指定有效的索引值,可以是正数后负数,每个索引值使用逗号隔开。
如果是连续的索引,可以使用 … 来表示指定范围。
示例:
#! /usr/bin/perl
@arr=(11,22,3,44,55);#定义数组
@arr2=qw/hello wbyq welcome/;#qw方式定义
@arr3=(a..d);#连续序号定义
printf("[line:".__LINE__ ."] arr所有成员:@arr\n");
printf("[line:".__LINE__ ."] arr成员个数:".scalar @arr ."\n");
$count=push(@arr,@arr2);#将arr2从尾部插入
printf("[line:".__LINE__ ."] arr所有成员:@arr\n");
printf("[line:".__LINE__ ."] arr成员个数:$count\n");
$count=unshift(@arr,@arr3);#arr3从头部插入
printf("[line:".__LINE__ ."] arr所有成员:@arr\n");
printf("[line:".__LINE__ ."] arr成员个数:$count\n");
@buff=@arr[0,1,5];#获取arr[0]、arr[1]、arr[5]
print "buff成员个数:".scalar @buff ."\n";
print "buff所有成员:@buff\n";
@buff=@arr[-5..-1];#获取最后五个成员
print "buff成员个数:".scalar @buff ."\n";
print "buff所有成员:@buff\n";
运行效果:
[wbyq@wbyq 0709]$ ./1.pl
[line:5] arr所有成员:11 22 3 44 55
[line:6] arr成员个数:5
[line:8] arr所有成员:11 22 3 44 55 hello wbyq welcome
[line:9] arr成员个数:8
[line:11] arr所有成员:a b c d 11 22 3 44 55 hello wbyq welcome
[line:12] arr成员个数:12
buff成员个数:3
buff所有成员:a b 22
buff成员个数:5
buff所有成员:44 55 hello wbyq welcome
5.数组元素替换splice
Perl中可以使用splice函数实现数组元素替换。
splice使用语法如下:
spice(@arr [起始位置,替换个数,列表]);
示例1:spice(@arr); #清空数组
示例2:spice(@arr,0,2,20…25);#表示从下标0开始,替换两个成员,多余成员则插入到数组
#! /usr/bin/perl
@arr=("hello","wbyq","welcom");
print "数组元素:@arr\n";
splice(@arr);#清空数组
print "数组元素:@arr\n";
@arr=("hello","wbyq","welcom");
print "数组元素:@arr\n";
splice(@arr,0,5,(1,2,3,4,5));#从下标0,替换5个成员
print "数组元素:@arr\n";@arr=("hello","wbyq","welcom");
print "数组元素:@arr\n";
splice(@arr,0,2,(a..f));#从下标0,替换2个成员,多余成员则插入到数组
print "数组元素:@arr\n";
运行效果:
[wbyq@wbyq 0709]$ ./1.pl
数组元素:hello wbyq welcom
数组元素:
数组元素:hello wbyq welcom
数组元素:1 2 3 4 5
数组元素:hello wbyq welcom
数组元素:a b c d e f welcom
相关文章:

Perl语言之数组
Perl数组可以存储多个标量,并且标量数据类型可以不同。 数组变量以开头。访问与定义格式如下: #! /usr/bin/perl arr("asdfasd",2,23.56,a); print "输出所有:arr\n"; print "arr[0]$arr[0]\n"; #输出指定下标 print…...

写材料word和PPT
一、WORD 1、写内容 2、参考GPT改:内容、逻辑结构、语句 3、查标题及其标号 4、修改格式:仿宋 、正文统一为小三,标题三号,1.5倍行距,加页码。 采用VBA代码自动修改,不知为何标题无法修改字体 Sub 插入页…...

Centos---命令详解 vi 系统服务 网络
目录 一、CentOS vi命令详解 二、CentOS系统服务命令 三、CentOS权限管理命令: 四、CentOS网络管理命令介绍: 一、CentOS vi命令详解 Vi是一款强大的文本编辑器,在CentOS中广泛使用。以下是Vi编辑器的一些常用命令: 1. 打开…...

【.NET全栈】ASP.NET开发web应用——ASP.NET中的样式、主题和母版页
文章目录 前言一、在ASP.NET中应用CSS样式1、创建CSS样式(1)内联样式(2)内部样式表(3)外部样式表 2、应用CSS样式(1)菜鸟教程-简单例子(2)菜鸟教程-用户界面&…...

[ruby on rails]部署时候产生ActiveRecord::PreparedStatementCacheExpired错误的原因及解决方法
一、问题: 有时在 Postgres 上部署 Rails 应用程序时,可能会看到 ActiveRecord::PreparedStatementCacheExpired 错误。仅当在部署中运行迁移时才会发生这种情况。发生这种情况是因为 Rails 利用 Postgres 的缓存准备语句(PreparedStatementCache)功能来…...

函数传值面试题
let a {name: aa };function fun1(a) {a []; // 这里创建了一个新的局部变量a,它是一个空数组// a.name "芜湖" }fun1(a); // 调用fun1,传入a的引用副本 console.log(a); // 输出:{ name: aa }在 JavaScript 中,当你…...

redis笔记2
redis是用c语言写的,放不频繁更新的数据(用户数据。课程数据) Redis 中,"穿透"通常指的是缓存穿透(Cache Penetration)问题,这是指一种恶意或非法请求直接绕过缓存层,直接访问数据库或…...

Kafka(四) Consumer消费者
一,基础知识 1,消费者与消费组 每个消费者都有对应的消费组,不同消费组之间互不影响。 Partition的消息只能被一个消费组中的一个消费者所消费, 但Partition也可能被再平衡分配给新的消费者。 一个Topic的不同Partition会根据分配…...

前端路由手写Hash和History两种模式
文章目录 1. Hash模式:简洁而广泛适用2. History模式:更自然的用户体验3. 结论 在现代Web开发中,单页面应用(Single Page Application,简称SPA)因其流畅的用户体验和高效的页面交互能力而备受青睐。前端路由…...

Redis的单线程讲解与指令学习
目录 一.Redis的命令 二.数据类型 三.Redis的key的过期策略如何实现? 四.Redis为什么是单线程的 五.String有关的命令 Redis的学习专栏:http://t.csdnimg.cn/a8cvV 一.Redis的命令 两个基本命令 在Redis当中,有两个基本命令࿱…...

为什么MySQL会选择B+树作为索引
为什么MySQL会选择B树作为索引 在数据库管理系统中,索引是提升查询效率的关键技术之一。MySQL作为广泛使用的关系型数据库管理系统,其核心存储引擎InnoDB选择B树作为其索引结构,这一选择背后蕴含了深刻的性能和存储效率考量。本文将简要介绍…...

k8s secret-从环境变量里去读和从yaml文件里读取secret有什么区别?
从环境变量和YAML文件中读取Kubernetes Secret的区别主要体现在使用方式、动态更新能力以及管理便捷性上。以下是详细的区别说明: 1. **使用方式**: - **环境变量方式**:Kubernetes允许将Secret作为环境变量注入到Pod的容器中。这种方式的好处…...

Springboot+Aop用注解实现阿里云短信验证码校验,校验通过自动删除验证码缓存
1.新建操作类型枚举(这里的IEnum是我自定义的http请求拦截接口,不需要的话可以不用实现) Getter AllArgsConstructor public enum OperationType implements IEnum<Integer> {/*** 注册*/SIGN_UP(0),/*** 密码登录*/LOGIN_BY_PWD(1),/…...

无线物联网新时代,RFID拣货标签跟随潮流
拣选技术的演变历程,本质上是从人力操作向自动化、智能化转型的持续进程。近期,“货寻人”技术成为众多企业热烈追捧的对象,它可以根据企业的特定需求,从众多拣选方案中选出最优解。那么,在采用“货到人”拣选技术时&a…...

Java8 根据List实体中一个字段去重取最大值,并且根据该字段进行排序
1、前言 某个功能要求需要对一个list对象里数据按照股票分组,并且取分组涨跌幅最大的,返回一个新的list对象,并且按照涨跌幅字段进行排序,这么一连串的要求,如果按照传统的写法,我们需要写一大坨的代码&am…...

微服务经纬:Eureka驱动的分布式服务网格配置全解
微服务经纬:Eureka驱动的分布式服务网格配置全解 在微服务架构的宏伟蓝图中,服务网格(Service Mesh)作为微服务间通信的独立层,承担着流量管理、服务发现、故障恢复等关键任务。Eureka,Netflix开源的服务发…...

关于前端数据库可视化库的选择,vue3+antd+g2plot录课计划
之前:antdv 现在:g2plot https://g2plot.antv.antgroup.com/manual/introduction 录课内容:快速入门 图表示例: 选择使用比较广泛的示例类型,录课顺序如下: 1、折线图2、面积图3、柱形图4、条形图5、饼…...

linux进行redis的安装并使用RDB进行数据迁移
现在有两台电脑,分别是A,B,现在我要把A电脑上的redis的数据迁移到B电脑上,B电脑上是没有安装redis的 1.找到A电脑的redis的版本 1.先启动A电脑的redis,一般来说,都是直接在linux的控制台输入:re…...

深入理解Scikit-learn:决策树与随机森林算法详解
用sklearn实现决策树与随机森林 1. 简介 决策树和随机森林是机器学习中的两种强大算法。决策树通过学习数据特征与标签之间的规则来进行预测,而随机森林则是由多棵决策树组成的集成算法,能有效提高模型的稳定性和准确性。 2. 安装sklearn 首先&#…...

AutoHotKey自动热键(十一)下载SciTE4AutoHotkey-Plus的中文增强版脚本编辑器
关于AutoHotkey的专用编辑器, SciTE4AutoHotkey是一个免费的基于 SciTE 的 AutoHotkey 脚本编辑器,除了 DBGp 支持, 它还为 AutoHotkey 提供了语法高亮, 调用提示, 参数信息和自动完成, 以及其他拥有的编辑特性和辅助工具.XDebugClient 是一个基于 .NET Framework 2.0 的简单开…...

Halcon与C++之间的数据转换
HALCON的HTuple类型(元组)功能很强大,可以表示INT、double、string等多种类型数据。当元组中只有一个成员时,HTuple也可表示原子类型 1. haclon -> C //HTuple转int HTuple hTuple 1; int data1 hTuple[0].I(); // data1 1//HTuple转do…...

MybatisPlus 一些技巧
查询简化 SimpleQuery 有工具类 com.baomidou.mybatisplus.extension.toolkit.SimpleQuery 对 selectList 查询后的结果进行了封装,使其可以通过 Stream 流的方式进行处理,从而简化了 API 的调用。 方法 list() 支持对一个列表提取某个字段ÿ…...

定制化服务发现:Eureka中服务实例偏好的高级配置
定制化服务发现:Eureka中服务实例偏好的高级配置 在微服务架构中,服务实例的智能管理和优化是保证系统高效运行的关键。Eureka作为Netflix开源的服务注册与发现框架,提供了丰富的配置选项来满足不同场景下的需求。服务实例偏好配置允许开发者…...

【实战场景】MongoDB迁移的那些事
【实战场景】MongoDB迁移的那些事 开篇词:干货篇【MongoDB迁移的方法】:1. 基于mongodump和mongorestore的迁移一、迁移前准备二、使用mongodump备份数据三、使用mongorestore还原数据四、注意事项 2. 基于MongoDB复制集的迁移一、迁移前准备二、配置新复…...

为什么要使用加密软件?
一、保护数据安全:加密软件通过复杂的加密算法对敏感数据进行加密处理,使得未经授权的人员即使获取了加密数据,也无法轻易解密和获取其中的内容。这极大地提高了数据在存储、传输和使用过程中的安全性。 二、遵守法律法规:在许多国…...

k8s学习笔记——dashboard安装
重装了k8s集群后,重新安装k8s的仪表板,发现与以前安装不一样的地方。主要是镜像下载的问题,由于网络安全以及国外网站封锁的原因,现在很多镜像按照官方提供的仓库地址都下拉不下来,导致安装失败。我查了好几天…...

AI艺术创作:掌握Midjourney和DALL-E的技巧与策略
AI艺术创作:掌握Midjourney和DALL-E的技巧与策略 AI艺术创作正逐渐成为艺术家和创意工作者们探索新表达方式的重要工具。Midjourney和DALL-E是两款领先的AI绘画工具,它们各有独特的功能和优势。本文将详细介绍如何掌握这两款工具的使用技巧,…...

在Mac上免费恢复误删除的Word文档
Microsoft Word for Mac是一个有用的文字处理应用程序,它与Microsoft Office套件捆绑在一起。该软件的稳定版本包括 Word 2019、2016、2011 等。 Word for Mac 与 Apple Pages 兼容;这允许在不同的操作系统版本中使用Word文档,而不会遇到任何麻烦。 与…...

HarmonyOS 屏幕适配设计
1. armonyOS 屏幕适配设计 1.1. 像素单位 (1)px (Pixels) px代表屏幕上的像素点,是手机屏幕分辨率的单位,即屏幕物理像素单位。 (2)vp (Viewport Percentage) vp是视口百分比单位,基于…...

Netfilter之连接跟踪(Connection Tracking)和反向 SNAT(Reverse SNAT)
连接跟踪(Connection Tracking) 连接跟踪是 Netfilter 框架中的一个功能,用于跟踪网络连接的状态和元数据。它使防火墙能够识别和处理数据包属于哪个连接,并在双向通信中正确匹配请求和响应数据包。 工作原理 建立连接…...