当前位置:K88软件开发文章中心编程语言PerlPerl01 → 文章内容

Perl 数组

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-11 13:10:36

Perl 数组Perl 数组一个是存储标量值的列表变量,变量可以是不同类型。数组变量以 @ 开头。访问数组元素使用 $ + 变量名称 + [索引值] 格式来读取,实例如下:实例





#!/usr/bin/perl@hits = (25, 30, 40);@names = ("google", "k88", "taobao");print "\$hits[0] = $hits[0]\n";print "\$hits[1] = $hits[1]\n";print "\$hits[2] = $hits[2]\n";print "\$names[0] = $names[0]\n";print "\$names[1] = $names[1]\n";print "\$names[2] = $names[2]\n";程序中 $ 符号使用了 \ 来转义,让他原样输出。执行以上程序,输出结果为:$hits[0] = 25$hits[1] = 30$hits[2] = 40$names[0] = google$names[1] = k88$names[2] = taobao创建数组数组变量以 @ 符号开始,元素放在括号内,也可以以 qw 开始定义数组。@array = (1, 2, 'Hello');@array = qw/这是 一个 数组/;第二个数组使用 qw// 运算符,它返回字符串列表,数组元素以空格分隔。当然也可以使用多行来定义数组:@days = qw/googletaobao...k88/;你也可以按索引来给数组赋值,如下所示:$array[0] = 'Monday';...$array[6] = 'Sunday';访问数组元素访问数组元素使用 $ + 变量名称 + [索引值] 格式来读取,实例如下:实例@sites = qw/google taobao k88/;print "$sites[0]\n";print "$sites[1]\n";print "$sites[2]\n";print "$sites[-1]\n";





# 负数,反向读取执行以上程序,输出结果为:googletaobaok88k88数组索引值从 0 开始,即 0 为第一个元素,1 为第二个元素,以此类推。负数从反向开始读取,-1 为第一个元素, -2 为第二个元素数组序列号Perl 提供了可以按序列输出的数组形式,格式为 起始值 + .. + 结束值,实例如下:实例





#!/usr/bin/perl@var_10 = (1..10);@var_20 = (10..20);@var_abc = (a..z);print "@var_10\n";





# 输出 1 到 10print "@var_20\n";





# 输出 10 到 20print "@var_abc\n";





# 输出 a 到 z执行以上程序,输出结果为:1 2 3 4 5 6 7 8 9 1010 11 12 13 14 15 16 17 18 19 20a 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数组大小数组大小由数组中的标量上下文决定。:@array = (1,2,3);print "数组大小:





",标量 @array,"\n";数组长度返回的是数组物理大小,而不是元素的个数,我们可以看以下实例:实例





#!/uer/bin/perl@array = (1,2,3);$array[50] = 4;$size = @array;$max_index = $





#array;print "数组大小:





$size\n";print "最大索引:





$max_index\n";执行以上程序,输出结果为:数组大小:





51最大索引:





50从输出的结果可以看出,数组元素只有四个,但是数组大小为 51。添加和删除数组元素Perl 提供了一些有用的函数来添加和删除数组元素。 如果你之前没有编程经验,可能会问什么是函数,其实我们之前使用的 print 即是一个输出函数。 下表列出了数组中常用的操作函数:序号类型和描述1push @ARRAY, LIST将列表的值放到数组的末尾2pop @ARRAY弹出数组最后一个值,并返回它3shift @ARRAY弹出数组第一个值,并返回它。数组的索引值也依次减一。4unshift @ARRAY, LIST将列表放在数组前面,并返回新数组的元素个数。实例





#!/usr/bin/perl





# 创建一个简单是数组@sites = ("google","k88","taobao");print "1. \@sites = @sites\n";





# 在数组结尾添加一个元素push(@sites, "baidu");print "2. \@sites = @sites\n";





# 在数组开头添加一个元素unshift(@sites, "weibo");print "3. \@sites = @sites\n";





# 删除数组末尾的元素pop(@sites);print "4. \@sites = @sites\n";





# 移除数组开头的元素shift(@sites);print "5. \@sites = @sites\n";执行以上程序,输出结果为:切割数组我们可以切割一个数组,并返回切割后的新数组:实例





#!/usr/bin/perl@sites = qw/google taobao k88 weibo qq facebook 网易/;@sites2 = @sites[3,4,5];print "@sites2\n";执行以上程序,输出结果为:weibo qq facebook数组索引需要指定有效的索引值,可以是正数后负数,每个索引值使用逗号隔开。如果是连续的索引,可以使用 .. 来表示指定范围:实例





#!/usr/bin/perl@sites = qw/google taobao k88 weibo qq facebook 网易/;@sites2 = @sites[3..5];print "@sites2\n";执行以上程序,输出结果为:weibo qq facebook替换数组元素Perl 中数组元素替换使用 splice() 函数,语法格式如下:splice @ARRAY, OFFSET [ , LENGTH [ , LIST ] ]参数说明:@ARRAY:要替换的数组。OFFSET:起始位置。LENGTH:替换的元素个数。LIST:替换元素列表。以下实例从第6个元素开始替换数组中的5个元素:





实例





#!/usr/bin/perl@nums = (1..20);print "替换前 - @nums\n";splice(@nums, 5, 5, 21..25);print "替换后 - @nums\n";执行以上程序,输出结果为:替换前 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20替换后 - 1 2 3 4 5 21 22 23 24 25 11 12 13 14 15 16 17 18 19 20将字符串转换为数组Perl 中将字符串转换为数组使用 split() 函数,语法格式如下:split [ PATTERN [ , EXPR [ , LIMIT ] ] ]参数说明:PATTERN:分隔符,默认为空格。EXPR:指定字符串数。LIMIT:如果指定该参数,则返回该数组的元素个数。实例





#!/usr/bin/perl





# 定义字符串$var_test = "k88";$var_string = "www-k88-com";$var_names = "google,taobao,k88,weibo";





# 字符串转为数组@test = split('', $var_test);@string = split('-', $var_string);@names = split(',', $var_names);print "$test[3]\n";





# 输出 oprint "$string[2]\n";





# 输出 comprint "$names[3]\n";





# 输出 weibo执行以上程序,输出结果为:ocomweibo将数组转换为字符串Perl 中将数组转换为字符串使用 join() 函数,语法格式如下:join EXPR, LIST参数说明:EXPR:连接符。LIST:列表或数组。实例





#!/usr/bin/perl





# 定义字符串$var_string = "www-k88-com";$var_names = "google,taobao,k88,weibo";





# 字符串转为数组@string = split('-', $var_string);@names = split(',', $var_names);





# 数组转为字符串$string1 = join( '-', @string );$string2 = join( ',', @names );print "$string1\n";print "$string2\n";执行以上程序,输出结果为:www-k88-comgoogle,taobao,k88,weibo数组排序Perl 中数组排序使用 sort() 函数,语法格式如下:sort [ SUBROUTINE ] LIST参数说明:SUBROUTINE:指定规则。

[1] [2]  下一页


Perl 数组