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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/378503.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Quart 框架——来源于Flask的强大且灵活的异步Web框架】

目录 前言一、Quart简介1-1、简介1-2、与flask的区别 二、快速开始2-1、安装2-2、基本用法 三、核心功能3-1、异步路由3-2、WebSockets 支持3-3、中间件3-4、蓝图 (Blueprints) 四、部署4-1、使用uvicorn部署4-2、使用hypercorn部署 五、案例分析总结 前言 Quart 是一个基于 Py…

3.5、matlab打开显示保存点云文件(.ply/.pcd)以及经典点云模型数据

1、点云数据简介 点云数据是三维空间中由大量二维点坐标组成的数据集合。每个点代表空间中的一个坐标点,可以包含有关该点的颜色、法向量、强度值等额外信息。点云数据可以通过激光扫描、结构光扫描、摄像机捕捉等方式获取,广泛应用于计算机视觉、机器人…

排序——归并排序及排序章节总结

前面的文章中 我们详细介绍了排序的概念,插入排序,交换排序与选择排序,大家可以通过下面的链接再去学习: ​​​​​​排序的概念及插入排序 交换排序 选择排序 这篇文章就详细介绍一下另一种排序算法:归并排序以及…

NineData全面支持PostgreSQL可视化表结构设计

“PostgreSQL 是最像 Oracle 的开源关系型数据库“,也正因为如此,很多企业都青睐 PostgreSQL,拿它当成 Oracle 的替代品。所以毫无疑问,目前 PostgreSQL 在企业中非常常见。 对于直接接触 PostgreSQL 的开发人员而言,…

洛谷 P1056 [NOIP2008 普及组 T2]:排座椅 ← 贪心算法

【题目来源】https://www.luogu.com.cn/problem/P1056https://www.acwing.com/problem/content/436/【题目描述】 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。 不过,班主任小雪发现了一些有趣的现象&#xff0c…

算法2--贪心算法

1.老鼠和猫的交易 小老鼠准备了M磅的猫粮,准备去和看守仓库的猫做交易,因为仓库里有小老鼠喜欢吃的五香豆。 仓库有N个房间; 第i个房间有 J[i] 磅的五香豆,并且需要用 F[i] 磅的猫粮去交换; 老鼠不必交换该房间所有的五…

大数据技术基础

一、大数据平台 1.大数据平台方案步骤: ①市场上有哪些大数据平台 ②硬件、系统、业务增长等方面 ③方案是否通过 通过后:按照一期目标投入 先虚拟环境部署联系,再实际部署 《大数据架构介绍》《Hadoop架构解析》《Hadoop集群规划》 《H…

微信小程序毕业设计-汽车维修项目管理系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…

ollama + fastgpt 搭建免费本地知识库

目录 1、ollama ollama的一些操作命令: 使用的方式: 2、fastgpt 快速部署: 修改配置: config.json: docker-compose.yml: 运行fastgpt: 访问OneApi: 添加令牌和渠道: 登陆fastgpt,创建知识库和应用 3、总结: 附录: 1. 11434是ollama的端口: 2. m3e 测…

Java 中的正则表达式

转义字符由反斜杠\x组成,用于实现特殊功能当想取消这些特殊功能时可以在前面加上反斜杠\ 例如在Java中当\出现时是转义字符的一部分,具有特殊意义,前面加一个反斜可以取消其特殊意义,表示1个普通的反斜杠\,\\\\表示2个…

【排序算法】1.冒泡排序-C语言实现

冒泡排序(Bubble Sort)是最简单和最通用的排序方法,其基本思想是:在待排序的一组数中,将相邻的两个数进行比较,若前面的数比后面的数大就交换两数,否则不交换;如此下去,直…

Java红娘婚恋相亲交友系统小程序源码

红娘婚恋相亲交友小程序:遇见爱情,从指尖开始💖 📱 掌中红娘,随时待命 💌 在这个数字化时代,爱情也迎来了它的新舞台——“红娘婚恋相亲交友小程序”。只需轻轻一点,你的专属红娘就…

git自动pull同步远程若干分支与本地若干分支

git自动pull同步远程若干分支与本地若干分支 假设远程代码仓库有100个分支,而本地只有10个本地分支与远程分支一一对应,现在要保持本地的这个10个分支与远程一致,最笨的方法是checkout到每个分支,然后一个一个的 git pull origin…

【文心智能体】前几天百度热搜有一条非常有趣的话题《00后疯感工牌》,看看如何通过低代码工作流方式实现图片显示

00后疯感工牌体验:https://mbd.baidu.com/ma/s/6yA90qtM 目录 前言比赛推荐工作流创建工作流入口创建工作流界面工作流界面HTTP工具卡点地方 总结推荐文章 前言 前几天百度热搜有一条非常有有趣《00后疯感工牌》。 想着通过文心智能体去一键生成00后疯感工牌是不是…

打包一个自己的Vivado IP核

写在前面 模块复用是逻辑设计人员必须掌握的一个基本功,通过将成熟模块打包成IP核,可实现重复利用,避免重复造轮子,大幅提高我们的开发效率。 接下来将之前设计的串口接收模块和串口发送模块打包成IP核,再分别调用…

华为USG6000V防火墙安全策略用户认证

目录 一、实验拓扑图 二、要求 三、IP地址规划 四、实验配置 1🤣防火墙FW1web服务配置 2.网络配置 要求1:DMZ区内的服务器,办公区仅能在办公时间内(9:00-18:00)可以访问,生产区的设备全天可以访问 要求2:生产区不…

list模拟实现【C++】

文章目录 全部的实现代码放在了文章末尾准备工作包含头文件定义命名空间类的成员变量为什么节点类是用struct而不是class呢?为什么要写get_head_node? 迭代器迭代器在list类里的实例化和重命名普通迭代器operator->()的作用是什么? const迭代器反向迭…

tkinter-TinUI-xml实战(12)pip可视化管理器

引言 pip命令行工具在平常使用方面确实足够简单,本项目只是作为TinUI多界面开发的示例。 当然,总有人想用GUI版pip,实际上也有。不过现在,我们就来手搓一个基于python和TinUI(tkinter)的pip可视化管理器。…

Java SpringAOP简介

简介 官方介绍: SpringAOP的全称是(Aspect Oriented Programming)中文翻译过来是面向切面编程,AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生…

模块化和包管理工具

一,模块化 1.定义 将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为 模块化 其中拆分出的 每个文件就是一个模块 ,模块的内部数据是私有的,不过模块可以暴露内部数据以便其他模块使用 2.模块化…