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

1、创建列表、数组
1.数组变量以 @ 符号开始,元素放在括号内,
2.以 qw 开始定义数组,第二个数组使用 qw// 运算符,它返回字符串列表,数组元素以空格分隔。
@array1 = (1, 2, 'Hello');    列表
@array2 = [1, 2, 'Hello'];   数组
@array3 = qw/this is  a array/;

print @array1[0];   #1
print @array1;          #12hello

print @array2[0];   #1
print @array2;          #ARRAY(0x26e3160)

2、访问数组元素
访问数组元素使用 $ + 变量名称 + [索引值] 格式来读取。
数组索引值
从正向开始读取, 0 开始,即 0 为第一个元素,1 为第二个元素,以此类推。
负数从反向开始读取, -1开始,即 -1 为第一个元素, -2 为第二个元素 。

3、列表、数组序列号
Perl 提供了可以按序列输出的数组形式,格式为 (起始值 .. 结束值)。

#!/usr/bin/perl

@var1_10 = (..);
@var2_10 = [..];
print @var1_10                 #
print @var2_10                 #ARRAY(0x26e3160) 

4、数组大小
数组大小由数组中的标量上下文决定。

。。。。。。

5、添加和删除数组函数
Perl 提供了一些有用的函数来添加和删除数组元素。

序号 类型和描述
1 push @ARRAY, LIST 

将列表的值放到数组的末尾

2 pop @ARRAY

弹出数组最后一个值,并返回它

3 shift @ARRAY

弹出数组第一个值,并返回它。数组的索引值也依次减一。

4 unshift @ARRAY, LIST

将列表放在数组前面,并返回新数组的元素个数。

6、切割数组
我们可以切割一个数组,并返回切割后的新数组:
实例

#!/usr/bin/perl
@sites = qw/      /;

@sites2 = @sites[,,];
@sites3 = @sites[..];

print
print   

7、替换数组元素
Perl 中数组元素替换使用 splice() 函数,语法格式如下:
splice @ARRAY, OFFSET [ , LENGTH [ , LIST ] ]
 参数说明:
    @ARRAY:要替换的数组。
    OFFSET:起始位置。
    LENGTH:替换的元素个数。
    LIST:替换元素列表。

以下实例从第6个元素开始替换数组中的5个元素:
实例
#!/usr/bin/perl

@nums = (..);
print "替换前: @nums\n";

splice(@nums, , , ..);
print "替换后: @nums\n";

执行以上程序,输出结果为:
替换前:
替换后:          

8、将字符串转换为数组
Perl 中将字符串转换为数组使用 split() 函数,语法格式如下:
split [ PATTERN [ , EXPR [ , LIMIT ] ] ]
参数说明:
    PATTERN:分隔符,默认为空格。
    EXPR:指定字符串数。
    LIMIT:如果指定该参数,则返回该数组的元素个数。

示例:
#!/usr/bin/perl

# 定义字符串
$var_1 = "hello";
$var_2 = "hello-welcome-world";
$var_3 = "hello,welcome,world,goodbye";

# 字符串转为数组
@var_1 = split('', $var_1);
@var_2 = split('-', $var_2);
@var_3 = split(',', $var_3);

print "$var_1[1]\n";   # 输出 e
print "$var_2[1]\n";   # 输出 welcome
print "$var_3[1]\n";   # 输出 welcome

9、将数组转换为字符串
Perl 中将数组转换为字符串使用 join() 函数,语法格式如下:
    join EXPR, LIST
参数说明:
    EXPR:连接符。
    LIST:列表或数组。

实例
#!/usr/bin/perl

# 定义字符串
$var_1 = "hello-welcome-world";
$var_2 = "hello,welcome,world,goodbye";

# 字符串转为数组
@var_1 = split('-', $var_1);
@var_2 = split(',', $var_2);

# 数组转为字符串
$var_1 = join( '-', @var_1 );
$var_2 = join( ',', @var_2 );

print "$var_1\n";
print "$var_2\n";

10、数组排序
Perl 中数组排序使用 sort() 函数,语法格式如下:
sort [ SUBROUTINE ] LIST
参数说明:
    SUBROUTINE:指定规则。
    LIST:列表或数组。

实例
#!/usr/bin/perl

# 定义数组
@sites = qw(hello world say goodbye);
print "排序前: @sites\n";

# 对数组进行排序
@sites = sort(@sites);
print "排序后: @sites\n";

执行以上程序,输出结果为:
排序前: hello world say goodbye
排序后: hello goodbye say world

11、合并数组
数组的元素是以逗号来分割,我们也可以使用逗号来合并数组,如下所示:

实例
#!/usr/bin/perl
@numbers = (,,(,,));
print     

也可以在数组中嵌入多个数组,并合并到主数组中:

实例
#!/usr/bin/perl

@odd = (,,);
@even = (, , );

@numbers = (@odd, @even);

print      

12、从列表中选择元素
一个列表可以当作一个数组使用,在列表后指定索引值可以读取指定的元素,如下所示:

实例
#!/usr/bin/perl

$,,,,)[];
print 

Perl 变量:数组变量的更多相关文章

  1. Perl关联数组用法集锦

    本文和大家重点讨论一下Perl关联数组的概念,创建Perl关联数组,从数组变量复制到Perl关联数组,元素的增删,用Perl关联数组循环等内容,相信通过本文的学习你对Perl关联数组的用法一定会有深刻 ...

  2. perl访问数组中变量

    数组一个是存储标量值的无序列表变量. 数组变量以 @ 开头.访问数组元素使用 $ + 变量名称 + [索引值] 格式来读取,实例如下: #!/usr/bin/perl @names = (" ...

  3. Perl 变量:标量变量、数组变量、哈希变量和变量上下文

    一.Perl 变量变量是存储在内存中的数据,创建一个变量即会在内存上开辟一个空间.解释器会根据变量的类型来决定其在内存中的存储空间,因此你可以为变量分配不同的数据类型,如整型.浮点型.字符串等.上一章 ...

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

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

  5. Perl常用特殊变量

    perl 内置变量 $- 当前页可打印的行数,属于Perl格式系统的一部分 $! 根据上下文内容返回错误号或者错误串 $” 列表分隔符 $# 打印数字时默认的数字输出格式 $$ Perl解释器的进程I ...

  6. perl5 第四章 列表和数组变量

    第四章 列表和数组变量 by flamephoenix 一.列表二.数组--列表的存贮  1.数组的存取  2.字符串中的方括号和变量替换   3.列表范围  4.数组的输出  5.列表/数组的长度  ...

  7. 多动手试试,其实List类型的变量在页面上取到的值可以直接赋值给一个js的Array数组变量

    多动手试试,其实List类型的变量在页面上取到的值可以直接赋值给一个js的Array数组变量,并且数组变量可以直接取到每一个元素var array1 = '<%=yearList =>'; ...

  8. $_REQUEST变量数组header()函数

    $_SERVER 包含http信息头,路径和服务器端的一些信息,没发送一次HTTP请求,就会创建一个$_SERVER数组Array ( [HTTP_HOST] => localhost [HTT ...

  9. block中无法使用C数组变量

    在Objective-C的block中无法使用C数组,即使我们不对C数组做任何改变,编译的时候也会报错: #include <stdio.h> int main() { const cha ...

随机推荐

  1. 在VS2013创建WebService并在IIS中发布和使用

    创建WebService 第一步:打开VS2013,新建空项目,注意选择.NET Framework的版本.这里我选择的是.NET Framework 4 新建好项目后,在项目中添加一个WebServ ...

  2. DZ X3 和 ECshop 通过uc_server实现会员同步整合教程.

    会员数据整合是实现商城和论坛系统共享会员数据.论坛系统注册会员整合后可直接在商城登陆.现以本人社区为例.本人社区采用DZ最新的X3.1 商城采用的ECshop最近的V2.7.3 现在想把两个模板整合在 ...

  3. 在CentOS上把MySQL从5.5升级到5.6(转)

    http://www.th7.cn/db/mysql/201408/66064.shtml 在CentOS上把MySQL从5.5升级到5.6 摘要:本文记录了在CentOS 6.3上,把MySQL从5 ...

  4. HDOJ5521(巧妙构建完全图)

    Meeting Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  5. appium+python自动化40-adb offline(5037端口被占)

    前言 adb连手机的时候经常会出现offline的情况,一般杀掉adb,然后重启adb可以解决. 如果发现不管怎么重启adb都连不上,一直出现offlie的情况,这个时候很大可能就是adb的5037端 ...

  6. Java中的自动类型转换/隐式类型转换

    整型.实型(常量).字符型数据可以混合运算.运算中,不同类型的数据先转化为同一类型,然后进行运算. 转换从低级到高级. 自动类型转换必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: sho ...

  7. 北京师范大学第十六届程序设计竞赛决赛 C萌萌哒身高差

    链接:https://www.nowcoder.com/acm/contest/117/C来源:牛客网 萌萌哒身高差 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他 ...

  8. [Java.Web]从零开始布署 Tomcat

    1. 下载 JRE 1.7 2. 下载 Tomcat 7.0.77,我使用的是红圈的压缩包版本,也可以使用绿圈的安装包版本[更省心] 3. 加入环境变量 JRE_HOME .CATALINA_HOME ...

  9. iis 重新安装后 重新注册asp.net

    服务器IIS问题: 卸载并重新安装了IIS.... 解决方法:原因是IIS重装后要重新安装一下.NET Framework. 开始-->运行-->CMD-->然后在CMD窗口中输入命 ...

  10. CDH5.10 添加kafka服务

    简介: CDH的parcel包中是没有kafka的,kafka被剥离了出来,需要从新下载parcel包安装.或者在线安装,但是在线安装都很慢,这里使用下载parcel包离线安装的方式. PS:kafk ...