Perl语言之数组

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开头定义数组

perl 复制代码
#! /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";

运行示例:

perl 复制代码
[wbyq@wbyq 0709]$ ./1.pl 
所有成员:这是一个数组 123 456 890 "数组创建示例"
成员个数:5
第一个成员:这是一个数组
最后一个成员:"数组创建示例"
size=4
arr[0]成员长度:18
arr[1]成员长度:3

2 数组序列号

perl 复制代码
#! /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"

运行效果:

perl 复制代码
[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语言提供有从末尾插入成员、从头插入、从头取数据、从末尾取数据。

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";

运行示例:

perl 复制代码
[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[索引值];

数组索引需要指定有效的索引值,可以是正数后负数,每个索引值使用逗号隔开。

如果是连续的索引,可以使用 ... 来表示指定范围。

示例:

perl 复制代码
#! /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";

运行效果:

perl 复制代码
[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开始,替换两个成员,多余成员则插入到数组

perl 复制代码
#! /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";

运行效果:

perl 复制代码
[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
相关推荐
q5673152322 分钟前
在 Bash 中获取 Python 模块变量列
开发语言·python·bash
许野平1 小时前
Rust: 利用 chrono 库实现日期和字符串互相转换
开发语言·后端·rust·字符串·转换·日期·chrono
也无晴也无风雨1 小时前
在JS中, 0 == [0] 吗
开发语言·javascript
狂奔solar1 小时前
yelp数据集上识别潜在的热门商家
开发语言·python
blammmp2 小时前
Java:数据结构-枚举
java·开发语言·数据结构
何曾参静谧2 小时前
「C/C++」C/C++ 指针篇 之 指针运算
c语言·开发语言·c++
暗黑起源喵2 小时前
设计模式-工厂设计模式
java·开发语言·设计模式
WaaTong2 小时前
Java反射
java·开发语言·反射
Troc_wangpeng2 小时前
R language 关于二维平面直角坐标系的制作
开发语言·机器学习
努力的家伙是不讨厌的2 小时前
解析json导出csv或者直接入库
开发语言·python·json