perl数组应用总结

发布时间:2019-11-26编辑:脚本学堂
数组是perl里面一种非常有用的列表,可以通过下面的方式定义数组:
复制代码 代码如下:@a=("hello","world","great");
@b=(1,2,3,4,5,6,7); 或@b=(1..7); 如果是1到100

数组是perl里面一种非常有用的列表,可以通过下面的方式定义数组:
 

复制代码 代码如下:
@a=("hello","world","great");
@b=(1,2,3,4,5,6,7); 或@b=(1..7); 如果是1到100万的数组,这样太有用了。
@c=(); 空数组

访问数组通过下标的方式,起始值为0:
$b[0]=10000;
注意这里标示符变成了$不是@。通过这个变化表示这时正在访问一个单独的数据。而不是一组数据。还可以使用多个下标,但是这时就要使用@引导符了。例如:
 

复制代码 代码如下:
@b[5,7,9]=(45,56,67);

数组之间相互拷贝,可以用下面的方式:
 

复制代码 代码如下:
@d=@c;

这样要比c语言简单多了。同c语言不同,perl的数组是可以动态改变大小的。因此我们可以追加,删除数组内的元素。追加一个元素可以使用这种方式:
 

复制代码 代码如下:
@c=(@c,"hello");

perl里面有一个专门的函数用来追加操作叫做push,push的使用方法如下:
 

复制代码 代码如下:
push(@c,"hello");
push(@c,("hello","halloha"));
push(@c,@a);

这里可以看到,可以给数组追加一个元素,一组元素甚至另外一个数组。另外,在perl的数组中可以放不同类型的标量。这主要是因为perl的灵活自由的语法规则和不对变量进行不必要的限制的原则。有了push,就一定有pop。pop就是从数组的最后取出一个元素。用法为:
 

复制代码 代码如下:
pop(@a);

既然可以从数组的末尾加入元素,那么一定也可以从数组的开头加入元素。那么这个功能是由unshift函数提供的。用法为:
 

复制代码 代码如下:
unshift(@c,"hello");
unshift(@c,("hello","halloha"));
unshift(@c,@a);

有了unshif就一定会有shift了。shift的功能是从数组的开头取出一个元素。用法为:
 

复制代码 代码如下:
unshift( @a);

有了操作数组两端的函数那么一定也会有操作数组中间部分的函数,这个函数就是splice,splice函数有三个作用。第一个作用是向数组中间的一部分插入内容。例如:
 

复制代码 代码如下:
@d=(1..9);
my @e=("a".."f");
splice(@d,2,2,@e);

将会得到12abcdef56789,注意这里是从第二个开始插入,不是从下标为2的元素开始插入的。splice的第二个功能是删除,例如在刚才的代码上面再加上:
 

复制代码 代码如下:
splice(@d,2,6);

将可以得到1256789;splice的第三个功能就是删除到末尾。语法为:
 

复制代码 代码如下:
splice(@d,2);

就是从第二个开始,删除到末尾。我们还应该有一个可以把整个数组合并成一个标量的函数。这个函数就是join,join有两个参数,第一个参数是合并时放在元素之间的分割符,第二个是进行操作的数组。 例如:
 

复制代码 代码如下:
my @g=(1,2,3);
join(" ",@g);

将可以得到“1 2 3”,还有三个函数我们昨天已经见过了,就是undef,chop和chomp。undef(@a); 的作用是把@a的内容清空。chop(@a); 的作用是把数组内每个元素的末尾去一个字符。而chomp(@a); 的作用则是把数组内的每一个元素的末尾的换行符去掉。我们还应该介绍一个函数就是scalar,这个函数取得数组的长度。例如:
 

复制代码 代码如下:
my @h=(1,2,3);
scalar(@h);

将可以得到3。但是我们经常不这么用,因为在将数组向标量转换时就会返回数组的长度,例如下面的操作就可以。
 

复制代码 代码如下:
my @i=(1,2,3,4);
print @i."n";