1.Perl 数组
Perl 数组一个是存储标量值的列表变量,变量可以是不同类型。
数组变量以 @ 开头。访问数组元素使用 $ + 变量名称 + [索引值] 格式来读取,实例如下:
#!/usr/bin/perl
@hits = (25, 30, 40);
@names = ("google", "abc", "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] = abc
$names[2] = taobao
2.创建数组
数组变量以 @ 符号开始,元素放在括号内,也可以以 qw 开始定义数组。
@array = (1, 2, 'Hello');
@array = qw/这是 一个 数组/;
第二个数组使用 qw// 运算符,它返回字符串列表,数组元素以空格分隔。当然也可以使用多行来定义数组:
@days = qw/google
taobao
...
abc/;
你也可以按索引来给数组赋值,如下所示:
$array[0] = 'Monday';
...
$array[6] = 'Sunday';
3.访问数组元素
访问数组元素使用 $ + 变量名称 + [索引值] 格式来读取,实例如下:
@sites = qw/google taobao abc/;
print "$sites[0]\n";
print "$sites[1]\n";
print "$sites[2]\n";
print "$sites[-1]\n"; # 负数,反向读取
执行以上程序,输出结果为:
google
taobao
abc
abc
数组索引值从 0 开始,即 0 为第一个元素,1 为第二个元素,以此类推。
负数从反向开始读取,-1 为第一个元素, -2 为第二个元素
4.数组序列号
Perl 提供了可以按序列输出的数组形式,格式为 起始值 + .. + 结束值,实例如下:
#!/usr/bin/perl
@var_10 = (1..10);
@var_20 = (10..20);
@var_abc = (a..z);
print "@var_10\n"; # 输出 1 到 10
print "@var_20\n"; # 输出 10 到 20
print "@var_abc\n"; # 输出 a 到 z
执行以上程序,输出结果为:
1 2 3 4 5 6 7 8 9 10
10 11 12 13 14 15 16 17 18 19 20
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
5.数组大小
数组大小由数组中的标量上下文决定。:
@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。
6.添加和删除数组元素
Perl 提供了一些有用的函数来添加和删除数组元素。
如果你之前没有编程经验,可能会问什么是函数,其实我们之前使用的 print 即是一个输出函数。
下表列出了数组中常用的操作函数:
序号 类型和描述
1 push @ARRAY, LIST 将列表的值放到数组的末尾
2 pop @ARRAY 弹出数组最后一个值,并返回它
3 shift @ARRAY 弹出数组第一个值,并返回它。数组的索引值也依次减一。
4 unshift @ARRAY, LIST 将列表放在数组前面,并返回新数组的元素个数。
#!/usr/bin/perl
# 创建一个简单是数组
@sites = ("google","abc","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";
7.切割数组
我们可以切割一个数组,并返回切割后的新数组:
#!/usr/bin/perl
@sites = qw/google taobao abc weibo qq facebook 网易/;
@sites2 = @sites[3,4,5];
print "@sites2\n";
执行以上程序,输出结果为:
weibo qq facebook
数组索引需要指定有效的索引值,可以是正数后负数,每个索引值使用逗号隔开。
如果是连续的索引,可以使用 .. 来表示指定范围:
#!/usr/bin/perl
@sites = qw/google taobao abc weibo qq facebook 网易/;
@sites2 = @sites[3..5];
print "@sites2\n";
执行以上程序,输出结果为:
weibo qq facebook
8.替换数组元素
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
9.将字符串转换为数组
Perl 中将字符串转换为数组使用 split() 函数,语法格式如下:
split [ PATTERN [ , EXPR [ , LIMIT ] ] ]
参数说明:
PATTERN:分隔符,默认为空格。
EXPR:指定字符串数。
LIMIT:如果指定该参数,则返回该数组的元素个数。
#!/usr/bin/perl
# 定义字符串
$var_test = "abc";
$var_string = "www-abc-com";
$var_names = "google,taobao,abc,weibo";
# 字符串转为数组
@test = split('', $var_test);
@string = split('-', $var_string);
@names = split(',', $var_names);
print "$test[3]\n"; # 输出 o
print "$string[2]\n"; # 输出 com
print "$names[3]\n"; # 输出 weibo
10.将数组转换为字符串
Perl 中将数组转换为字符串使用 join() 函数,语法格式如下:
join EXPR, LIST
参数说明:
EXPR:连接符。
LIST:列表或数组。
#!/usr/bin/perl
# 定义字符串
$var_string = "www-abc-com";
$var_names = "google,taobao,abc,weibo";
# 字符串转为数组
@string = split('-', $var_string);
@names = split(',', $var_names);
# 数组转为字符串
$string1 = join( '-', @string );
$string2 = join( ',', @names );
print "$string1\n";
print "$string2\n";
执行以上程序,输出结果为:
www-abc-com
google,taobao,abc,weibo
11.数组排序
Perl 中数组排序使用 sort() 函数,语法格式如下:
sort [ SUBROUTINE ] LIST
参数说明:
SUBROUTINE:指定规则。
LIST:列表或数组。
#!/usr/bin/perl
# 定义数组
@sites = qw(google taobao abc facebook);
print "排序前: @sites\n";
# 对数组进行排序
@sites = sort(@sites);
print "排序后: @sites\n";
执行以上程序,输出结果为:
排序前: google taobao abc facebook
排序后: facebook google abc taobao
注意:数组排序是根据 ASCII 数字值来排序。所以我们在对数组进行排序时最好先将每个元素转换为小写后再排序。
12.特殊变量: $[
特殊变量 $[ 表示数组的第一索引值,一般都为 0 ,如果我们将 $[ 设置为 1,则数组的第一个索引值即为 1,第二个为 2,以此类推。实例如下:
#!/usr/bin/perl
# 定义数组
@sites = qw(google taobao abc facebook);
print "网站: @sites\n";
# 设置数组的第一个索引为 1
$[ = 1;
print "\@sites[1]: $sites[1]\n";
print "\@sites[2]: $sites[2]\n";
执行以上程序,输出结果为:
网站: google taobao abc facebook
@sites[1]: google
@sites[2]: taobao
一般情况我们不建议使用特殊变量 $[,在新版 Perl 中,该变量已废弃。
13.合并数组
数组的元素是以逗号来分割,我们也可以使用逗号来合并数组,如下所示:
#!/usr/bin/perl
@numbers = (1,3,(4,5,6));
print "numbers = @numbers\n";
执行以上程序,输出结果为:
numbers = 1 3 4 5 6
也可以在数组中嵌入多个数组,并合并到主数组中:
#!/usr/bin/perl
@odd = (1,3,5);
@even = (2, 4, 6);
@numbers = (@odd, @even);
print "numbers = @numbers\n";
执行以上程序,输出结果为:
numbers = 1 3 5 2 4 6
14.从列表中选择元素
一个列表可以当作一个数组使用,在列表后指定索引值可以读取指定的元素,如下所示:
#!/usr/bin/perl
$var = (5,4,3,2,1)[4];
print "var 的值为 = $var\n"
执行以上程序,输出结果为:
var 的值为 = 1
同样我们可以在数组中使用 .. 来读取指定范围的元素:
#!/usr/bin/perl
@list = (5,4,3,2,1)[1..3];
print "list 的值 = @list\n";
执行以上程序,输出结果为:
list 的值 = 4 3 2

7-Perl 数组的更多相关文章

  1. Perl数组和hash相关函数

    Perl数组和hash相关函数 内置的数组函数有: each, keys, pop, push, shift, splice, unshift, values 内置的hash函数有: delete, ...

  2. perl数组的长度与元素个数

    perl数组的长度与元素个数 $#数组名 ---表示数组中最后一个元素的下标,它等于元素个数减1. @数组名 ---表示数组中元素的个数. $标量=@数组名 ---将一个数组赋值给一个标量变量,标量得 ...

  3. Perl 数组

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

  4. perl 数组快速去除重复元素

    这里记录两种perl数组去重的办法,一种利用哈希(hash),一种直接利用perl自带的模块List::MoreUtils内部的函数uniq. 一.利用hash去重 示例代码如下: 1 #!/usr/ ...

  5. perl数组高级

    1 去除一个数组中的重复元素: 使用grep函数代码片段: 代码: my @array = ( 'a', 'b', 'c', 'a', 'd', 1, 2, 5, 1, 5 ); my %count; ...

  6. perl 数组变量(Array) 转载

    Perl 变量(2)--数组 原文地址:Perl 变量(2)--数组 作者:飞鸿无痕 二.数组 数组是标量数据的有序列表. 数组可以含任意多个元素.最小的数组可以不含元素,而最大的数组可以占满全部可用 ...

  7. Perl 数组应用详解(push, pop, shift, unshift)

    Perl的数组操作有四大常用函数: push:从数组的末尾加入元素.pop :从数组的末尾取出元素 shift: 从数组的开头取出元素unshift:从数组的开头加入元素 1.push #!/usr/ ...

  8. Perl数组: shift, unshift, push, pop

    pop pop函数会删除并返回数组的最后一个元素. .. ; $fred = pop(@array); # $fred变成9,@array 现在是(5,6,7,8) $barney = pop @ar ...

  9. Perl 变量:数组变量

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

  10. Perl中的数组&哈希应用

    哈希和数组是Perl中较为常用的结构,本文则重点讨论数组和哈希的一些基本用法,供广大喜爱Perl的同学们交流学习. 哈希 Perl中的哈希表类似于Python中的字典结构,由(键=>值)对构成, ...

随机推荐

  1. MySort(选做)

    一.题目要求 注意:研究sort的其他功能,要能改的动代码,需要答辩 模拟实现Linux下Sort -t : -k 2的功能. 要有伪代码,产品代码,测试代码(注意测试用例的设计) 参考 Sort的实 ...

  2. 【软件工程】Beta版本演示

    团队信息 队名:女生都队 组长博客: 博客链接 成员 学号 史恩泽(组长) 031702122 施金海 031702121 阮君曦 031702116 陈银山 031702137 李季城 031702 ...

  3. legend3---15、像粉丝数、关注数、课程数等数量数据如何处理

    legend3---15.像粉丝数.关注数.课程数等数量数据如何处理 一.总结 一句话总结: 在主表中加入这种数量字段:比如在用户表中加入粉丝数,关注数字段 普通更新:增加数量的时候将数据插入到关联表 ...

  4. PHP 二维数组去重方法

    php二维数组的去重策略,如果需要根据某字段去重(其他字段可能不一致),那么需要使用循环策略,如果去重的都是相同的(字段,值),那么可以用序列化方式. $allComments = array_map ...

  5. leetcode84 柱状图

    O(n^2) time 应用heights[r]<=heights[r+1]剪枝: class Solution { public: int largestRectangleArea(vecto ...

  6. Hibernate3主键生成策略

    identity 采用数据库生成的主键,用于为long.short.int类型生成唯一标识, Oracle 不支持自增字段. <id name="id" column=&qu ...

  7. memcached-slab内存管理

    一.Memcache内存分配机制 关于这个机制网上有很多解释的,我个人的总结如下. Page为内存分配的最小单位. Memcached 的内存分配以page为单位,默认情况下一个page是1M,可以通 ...

  8. LeetCode.1189-balloon实例数最大值(Maximum Number of Balloons)

    这是小川的第次更新,第篇原创 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第267题(顺位题号是1189).给定一个字符串文本,使用文本字符来构成单词"balloon&qu ...

  9. Python smtplib发邮件

    常用邮箱SMTP.POP3域名及其端口号 发送普通文本内容的邮件 import smtplib from email.header import Header from email.mime.text ...

  10. Golang结构体struct的使用(结构体嵌套, 匿名结构体等)

    转自: https://studygolang.com/articles/11313 golang中是没有class的,但是有一个结构体struct,有点类似,他没有像java,c++中继承的概念,但 ...