Perl是一个存储标量值的列表变量。变量可以是不同的类型。
该数组以@开头。访问数组元素以$+变量名+[索引值]的格式读取,示例如下:
例子
#!/usr/bin/perl@hits = (25,30,40);@ names =(\ ”谷歌\ ”, \”runoob \ & # 8221, \”淘宝\ ”);打印\ ”\ $ hits[0]= $ hits[0]\ n \ ”;打印\ ”\ $ hits[1]= $ hits[1]\ n \ ”;打印\ ”\ $ hits[2]= $ hits[2]\ n \ ”;打印\ ”\ $ names[0]= $ names[0]\ n \ ”;打印\ ”\ $ names[1]= $ names[1]\ n \ ”;打印\ ”\ $ names[2]= $ names[2]\ n \ ”;
程序中的$符号用\进行转义,这样就可以按原样输出。
执行上面的程序,输出结果是:
$ hits[0]= 25 $ hits[1]= 30 $ hits[2]= 40 $ names[0]= Google $ names[1]= runoob $ names[2]=淘宝创建数组
变量以@符号开始,元素用括号括起来。您也可以定义以qw开头的数组。
@array = (1,2,‘你好’);@array = qw/这是数组/;第二个数组使用qw//操作符,它返回一个字符串列表,数组元素用空点阵分隔。当然,你也可以用多行来定义一个数组:
@ days = qw/Google Taobao …run OOB/;还可以通过索引为数组赋值,如下所示:
$ array[0]= ‘周一’;…$ array[6]= ‘周日’;访问数组元素
访问数组元素以$+变量名+[索引值]的格式读取,示例如下:
例子
@sites = qw/google淘宝run OOB/;打印\ ”$ sites[0]\ n \ ”;打印\ ”$ sites[1]\ n \ ”;打印\ ”$ sites[2]\ n \ ”;打印\ ”$ sites[-1]\ n \ ”;#负数,反过来读
执行上面的程序,输出结果是:
googletaobaorunoobrunoob数组的索引值从0开始,即0是第一个元素,1是第二个元素,以此类推。
从负数反过来读,-1是第一个元素,-2是第二个元素。
数组序列号
Perl提供了可以顺序输出的数组形式,格式为起始值+..+结束值。例子如下:
例子
#!/usr/bin/perl@var_10 = (1..10);@var_20 = (10..20);@var_abc = (a..z);打印\ ”@ var _ 10 \ n \ ”#输出1到10打印\ ”@ var _ 20 \ n \ ”#输出10到20张照片\ ”@ var _ abc \ n \ ”#输出a到z
执行上面的程序,输出结果是:
1 3 4 5 6 7 8 9 1010 11 12 13 14 15 17 18 19 20a c d e f g h I j k l m n o p q r s t u v w x y z数组大小
数组的大小由数组中的标量上下文决定。:
@array = (1,2,3);打印\ ”数组大小:\ ”,标量@数组,\ ”\ n \ ”数组的长度返回数组的物理大小,而不是元素的数量。我们可以看看下面的例子:
例子
#!/uer/bin/perl@array = (1,2,3);$ array执行上面的程序,输出结果是:= 4;$ size = @ array$ ***x _ index = $ # array打印\ ”数组大小:$ size \ n \ ”打印\ ”最大索引:$ ***x _ index \ n \ ”
执行上面的程序,输出结果是:
数组大小:51最大索引:50从输出结果可以看出,只有四个数组元素,但是数组大小是51。
添加和删除数组元素。
Perl提供了一些有用的函数来添加和删除数组元素。
如果你以前没有编程经验,你可能会问什么是函数。其实我们之前用的print就是一个输出函数。
下表列出了数组中常用的运算函数:
序号类型和描述
1push @ARRAY,LIST
将列表中的值放在数组的末尾。
2pop @阵列
弹出数组的最后一个值并返回。
3移位@阵列
弹出数组的第一个值并返回。数组的索引值也依次减一。
4unshift @数组,列表
将列表放在数组的前面,并返回新数组中元素的数量。
例子
#!/usr/bin/perl#创建一个简单的数组@ sites =(\ ”谷歌\ ”,\”runoob \ & # 8221,\”淘宝\ ”);打印\ ”1.\ @ sites = @ sites \ n \ ”#在数组末尾添加元素push(@ sites,”百度\ ”);打印\ ”2.\ @ sites = @ sites \ n \ ”#在数组的开头添加一个未移位的元素(@ sites,\ ”微博\ ”);打印\ ”3.\ @ sites = @ sites \ n \ ”#删除数组末尾的元素pop(@ sites);打印\ ”4.\ @ sites = @ sites \ n \ ”#删除数组开头的元素shift(@ sites);打印\ ”5.\ @ sites = @ sites \ n \ ”
执行上面的程序,输出结果是:
切割阵列
我们可以剪切一个数组,并在剪切后返回新的数组:
例子
#!/usr/bin/perl @ sites = qw/google淘宝runoob weiboqq facebook网易/;@sites2 = @sites[3,4,5];打印\ ”@ sites2 \ n \ ”
[50]
微博qq facebook数组索引需要指定有效的索引值,可以是正数后跟负数。每个索引值由逗号分隔。
如果是连续索引,可以使用..要指明指定的范围:
例子
#!/usr/bin/perl @ sites = qw/google淘宝runoob weiboqq facebook网易/;@sites2 = @sites[3..5];打印\ ”@ sites2 \ n \ ”
执行上面的程序,输出结果是:
微博qq facebook替换数组元素
用splice()函数替换Perl中的数组元素,语法格式如下:
Splice @ array,offset [,length [,list]]参数描述:
@ARRAY:要替换的数组。
偏移量:起始位置。
LENGTH:要替换的元素的数量。
列表:替换元素列表。
以下示例从第6个元素开始替换数组中的5个元素:
例子
#!/usr/bin/perl@nums = (1..20);打印\ ”前者–@ nums \ n \ ”拼接(@nums,5,5,21..25);打印\ ”更换后–@ nums \ n \ ”
执行上面的程序,输出结果是:
前者–1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20更换后–1 3 4 5 21 22 23 24 25 11 12 13 15 16 17 18 19 20将字符串转换为数组
split()函数用于将Perl字符串转换为数组,语法格式如下:
分割[模式[,EXPR [,限制]]]参数的描述:
模式:分隔符,默认值为空。
EXPR:指定字符串的数量。
LIMIT:如果指定了该参数,则返回该数组中元素的数量。
例子
#!/usr/bin/perl#定义字符串$ var _ test = \ & # 8221runoob \ ”$ var _ string = \ & # 8221***-run OOB-com \ ”;$ var _ names = \ & # 8221google,淘宝,runoob,微博\ ”;# string into array @ test = split(”,$ var _ test);@ string = split(‘-‘,$ var _ string);@ names = split(‘,’,$ var _ names);打印\ ”$ test[3]\ n \ ”;# output oprint \ & # 8221$ string[2]\ n \ ”;#输出压缩\ ”$ names[3]\ n \ ”;#输出微博
执行上面的程序,输出结果是:
Ocomweibo将数组转换为字符串。
使用join()函数将Perl数组转换为字符串,语法格式如下:
连接EXPR的说明,列表参数:
EXPR:连接器。
列表:列表或数组。
例子
#!/usr/bin/perl#定义字符串$ var _ string = \ & # 8221***-run OOB-com \ ”;$ var _ names = \ & # 8221google,淘宝,runoob,微博\ ”;# string into array @ string = split(‘-‘,$ var _ string);@ names = split(‘,’,$ var _ names);# array into string $ string 1 = join(‘-‘,@ string);$ string 2 = join(‘,’,@ names);打印\ ”$ string1 \ n \ ”打印\ ”$ string2 \ n \ ”
执行上面的程序,输出结果是:
Www-runoob-comgoogle,淘宝,runoob,微博数组排序
Perl中的数组排序使用sort()函数,语法格式如下:
排序[子程序]列表参数说明:
子程序:指定一个规则。
列表:列表或数组。
例子
#!/usr/bin/perl#定义数组@ sites = qw(谷歌淘宝runoob脸书);打印\ ”上一个:@ sites \ n \ ”# Sort数组@ sites = Sort(@ sites);打印\ ”上一个:@ sites \ n \ ”
执行上面的程序,输出结果是:
排序前:google淘宝runoob facebook排序前:facebook google runoob淘宝注意:数组排序基于ASCII数值。所以在对数组排序时,我们最好先把每个元素转换成小写再排序。
特殊变量:$ [
特殊变量$[表示数组的第一个索引值,通常为0。如果我们将$[设置为1,数组的第一个索引值为1,第二个索引值为2,依此类推。例子如下:
例子
#!/usr/bin/perl#定义数组@ sites = qw(谷歌淘宝runoob脸书);打印\ ”网址:@ sites \ n \ ”#将数组的第一个索引设置为1 $[= 1;打印\ ”\ @ sites[1]:$ sites[1]\ n \ ”;打印\ ”\ @ sites[2]:$ sites[2]\ n \ ”;
执行上面的程序,输出结果是:
网址:Google淘宝Runoob脸书@ sites [1]: Google @ sites [2]:淘宝一般情况下,我们不建议使用特殊变量$ [,该变量在新版本的Perl中已经被抛弃。
合并数组
数组的元素用逗号分隔。我们也可以使用逗号来合并数组,如下所示:
例子
#!/usr/bin/perl@numbers = (1,3,(4,5,6));打印\ ”numbers = @ numbers \ n \ ”
执行上面的程序,输出结果是:
Numbers = 1 3 4 5 6您还可以在一个数组中嵌入多个数组,并将它们合并到主数组中:
例子
#!/usr/bin/perl@odd = (1,3,5);@even = (2,4,6);@ numbers =(@奇数,@偶数);打印\ ”numbers = @ numbers \ n \ ”
执行上面的程序,输出结果是:
Numbers = 1 3 5 2 4 6从列表中选择一个元素
列表可以用作数组,通过在列表后指定索引值可以读取指定的元素,如下所示:
例子
#!/usr/bin/perl$var = (5,4,3,2,1)[4];打印\ ”var的值为= $ var \ n \ & # 8221
执行上面的程序,输出结果是:
var的值= 1。同样,我们可以使用..在数组中读取指定范围内的元素:
例子
#!/usr/bin/perl@list = (5,4,3,2,1)[1..3];打印\ ”list的值= @ list \ n \ ”
执行上面的程序,输出结果是:
list的值= 4 3 2 Perl标量
Perl 哈希
本文来自暮以随然投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/562774.html