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.mzph.cn/bicheng/45836.shtml

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

相关文章

NLP任务:情感分析、看图说话

我可不向其他博主那样拖泥带水,我有代码就直接贴在文章里,或者放到gitee供你们参考下载,虽然写的不咋滴,废话少说,上代码。 gitee码云地址: 卢东艺/pytorch_cv_nlp - 码云 - 开源中国 (gitee.com)https:/…

初始c语言 语句

一 认识语句 控制流语句 if-else语句:用于条件判断。for循环语句:用于循环执行一段代码。while循环语句:当条件为真时执行循环。do-while循环语句:先执行一次循环体,然后再判断条件。switch语句:根据不同的…

CEPH 硬盘读写慢问题影响

ceph使用时经常会碰到起不来的情况 第一种就是服务器负载高,这个基本都会觉察到 还有一种就是硬盘问题 硬盘写问题 初始化时ceph会自己进行填充操作 ceph-volume lvm zap /dev/sdx --destroy 我就碰到过没初始化问题 看着一切正常 但看写入速度才几百KB/s 正常都100…

ArrayList模拟实现

ArrayList模拟实现 ArrayList 的初步介绍常见操作 ArrayList 的简单模拟实现 ArrayList 的初步介绍 ArrayList也叫做顺序表,底层是一个数组。 在创建顺序表 时就应该规定 里面元素的数据类型,其中不能直接传基本数据类型,例如int、char。需要…

Java代码初始化块

目录 实例域代码块 静态域代码块 初始化代码块分为静态域代码块和实例域代码块,静态域代码块在类第一次被加载时被执行,实例域代码块在创建对象时被执行,一个类中可以有多个代码块。 实例域代码块 使用方法 可以有输出语句 可以对类的属…

vue实现a-model弹窗拖拽移动

通过自定义拖拽指令实现 实现效果 拖动顶部,可对整个弹窗实施拖拽(如果需要拖动底部、中间内容实现拖拽,把下面的ant-modal-header对应改掉就行) 代码实现 编写自定义指令 新建一个ts / js文件,用ts举例 import V…

基于modbus tcp通讯的雷赛导轨控制器调试软件

0.前言 之前工作遇到了雷赛电机驱动器设备,主要是用来控制光学导轨移动。雷赛的调试软件用的时串口通讯,还要他们定制的串口线,在现场都是485转网络的接口,调试起来也很不方便。所以我就照着他们的说明书,写了一个简易…

Vue3 引入Vanta.js使用

能搜到这篇文章 想必一定看过demo效果图了吧 示例 Vanta.js - Animated 3D Backgrounds For Your Website (vantajs.com) 1. 引入 在根目录 index.html中引入依赖 <script src"https://cdnjs.cloudflare.com/ajax/libs/three.js/r134/three.min.js"></sc…

基于SpringBoot+VueJS+微信小程序技术的图书森林共享小程序设计与实现:7000字论文+源代码参考

博主介绍&#xff1a;硕士研究生&#xff0c;专注于信息化技术领域开发与管理&#xff0c;会使用java、标准c/c等开发语言&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架…

底软驱动 | U-boot移植点点滴滴

u-boot 移植要点 一般厂家直接提供 u-boot 源码&#xff0c;做查看、修改(增加新功能) 或 u-boot 版本升级这三大块的用处&#xff1b;后两种都需要对新板子做适配/移植。 如果没有提供 u-boot 源码&#xff0c;那么就从 u-boot 官方版本中找到一个最相近的板子配置进行移植&…

【QT】布局管理器

布局管理器 布局管理器1. 垂直布局2. 水平布局3. 网格布局4. 表单布局5. Spacer 布局管理器 之前使⽤ Qt 在界⾯上创建的控件, 都是通过 “绝对定位” 的⽅式来设定的&#xff1b;也就是每个控件所在的位置, 都需要计算坐标, 最终通过 setGeometry 或者 move ⽅式摆放过去。 …

排序-java(详解)

一&#xff0c;分类 主要的排序大致分为以下几类&#xff1a; 1&#xff0c;插入排序&#xff0c;又分为直接插入排序和希尔排序 2&#xff0c;选择排序&#xff0c;又分为选择排序和堆排序 3&#xff0c;交换排序&#xff0c;又分为冒泡排序和快速排序 4&#xff0c;归并…

【linux】服务器安装及卸载pycharm社区版教程

【linux】服务器安装及卸载pycharm社区版教程 【创作不易&#xff0c;求点赞关注收藏】 文章目录 【linux】服务器安装及卸载pycharm社区版教程1、到官网下载安装包2、通过终端wget下载安装包3、解压4、安装5、设置环境变量6、运行pycharm7、删除pycharm安装包、卸载pycharm …

从“卷模型”到“卷应用”:AI时代的价值重塑与个性化智能探索

&#x1f308;所属专栏&#xff1a;【其它】✨作者主页&#xff1a; Mr.Zwq✔️个人简介&#xff1a;一个正在努力学技术的Python领域创作者&#xff0c;擅长爬虫&#xff0c;逆向&#xff0c;全栈方向&#xff0c;专注基础和实战分享&#xff0c;欢迎咨询&#xff01; 您的点…

【漏洞复现】华测监测预警系统2.2 UserEdit.aspx SQL注入

声明&#xff1a;本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动&#xff0c;将与本文档的作者或发布者无关。 一、漏洞描述 华测监测预警系统2.2&#xff08;HuaCe Monitoring and Early Warning System 2.2&#xff09;是一款由华…

人工智能算法工程师(中级)课程9-PyTorch神经网络之全连接神经网络实战与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程9-PyTorch神经网络之全连接神经网络实战与代码详解。本文将给大家展示全连接神经网络与代码详解&#xff0c;包括全连接模型的设计、数学原理介绍&#xff0c;并从手写数字识别到猫狗识…

【第32章】MyBatis-Plus之代码生成器配置

文章目录 前言一、概述1.特点说明2.示例配置3. 数据库配置 (DataSourceConfig) 二、全局配置 (GlobalConfig)1.方法说明2.示例配置 三、包配置 (PackageConfig)1. 方法说明2. 示例配置 四、模板配置 (TemplateConfig)1. 方法说明2. 示例配置 五、注入配置 (InjectionConfig)1. …

使用 exe4j 转换 Java jar 程序为 Windows 平台可执行文件 (.exe)

使用 exe4j 转换 Java jar 程序为 Windows 平台可执行文件 &#xff08;.exe&#xff09; 介绍exe4j 特点&#xff1a;转换全过程&#xff08;软件操作&#xff09;1、注册2、选择模式3、配置应用4、选择执行的方式&#xff08;我这里管这个叫呈现方式&#xff09;5、选择 JAR …

Java 中的正则表达式

转义字符由反斜杠\x组成&#xff0c;用于实现特殊功能当想取消这些特殊功能时可能在前面加上反斜杠\ 例如在Java中\也具有特殊意义&#xff0c;前面加一个反斜杠表示取消特殊意义&#xff0c;表示1个普通的反斜杠\&#xff0c;\\\\表示2个普通的反斜杠\\。其实就是要求Java中的…

Python那些优质可视化工具!

作者&#xff1a;Lty美丽人生 https://blog.csdn.net/weixin_44208569 本次分享10个适用于多个学科的Python数据可视化库&#xff0c;其中有名气很大的也有鲜为人知的&#xff01; 1、matplotlib 两个直方图 matplotlib 是Python可视化程序库的泰斗。经过十几年它任然是Pytho…