Perl自学(04)——列表、数组

(本文参考博客)如有错误请指正!

1. 列表(注意:需保存到一个数组变量中!)

直接使用( , , )将若干标量包起来。()    #空列表

1.1 范围操作符(也称为数组序列号)

范围操作符:".."

格式:起始值 + .. + 结束值

  • 1 .. 5    #即从1到5
  • 5 .. 1    #无法计算,结果为undef,因为不能递减计算
  • a .. z    #全部小写字母
  • A .. Z    #全部大写字母
  • aa .. zz    #676个字母

1.1.1 省略引号的字符串列表:qw

把分界符内的字符串当成单引号字符串,并用空白分隔:qw\a b c\    #即(‘a’, 'b', 'c')

注意:分界符可以使用任意两个相同的标点符号或左右对称的分界符

例如:qw!a b c!;     qw#a b c#;     qw{a b c};     =》都表示(‘a’, 'b', 'c')

1.1.2 列表对列表的赋值

  ($a, $b, $c) = (1 .. 3);    #注意两边长度不等可能会有意外情况发生。

2. 数组

数组变量以字符 @ 开头,索引从 0 开始,如:@arr=(1,2,3)

Perl 数组一个是存储标量值的列表变量,变量可以是不同类型。

#!/usr/bin/perl
 
@ages = (1, 2, 3);             
@names = ("a", "b", "c");
 
print "\$ages[0] = $ages[0]\n";
print "\$ages[1] = $ages[1]\n";
print "\$ages[2] = $ages[2]\n";
print "\$names[0] = $names[0]\n";
print "\$names[1] = $names[1]\n";
print "\$names[2] = $names[2]\n";

输出结果:(程序中我们在 $ 标记前使用了转义字符 (\) ,这样才能输出字符 $。)

$ages[0] = 1
$ages[1] = 2
$ages[2] = 3
$names[0] = a
$names[1] = b
$names[2] = c
  1. 数组变量创建时初始值为空列表:()。
  2. 因为Perl用@和$来区分数组变量和简单变量,所以同一个名字可以同时用于数组变量和简单变量。

但很明显这样不好,不推荐。

2.1 数组的存取

对数组中的值通过下标存取,第一个元素下标为0。试图访问不存在的数组元素,则结果为NULL,但如果给超出数组大小的元素赋值,则数组自动增长,原来没有的元素值为NULL。

#!/usr/bin/perl

@array = (1, 2, 3, 4);
$scalar = $array[0];
$array[3] = 5; # now @array is (1,2,3,5)
print"\@array-1 = @array\n";
$scalar = $array[4]; # now $scalar = null;
print("\@scalar = $scalar\n");
$array[6] = 17; # now @array is (1,2,3,5,"","",17)
print("\@array-3 = @array\n");

输出结果:

2.2 数组间拷贝

两个数组的数组名相等即可。

@result = @original;

2.3 数组对简单变量的赋值

变量名 = 数组名【索引】

也可连续的赋值,具体如下:

#!/usr/bin/perl

@array = (1, 2 ,3);
print("\@array = @array\n");

@array_eqr = @array;
print("\@array_eqr = @array\n");

($var1, $var2) = @array; # $var1 = 1, $var2 = 2, 3被忽略
print "\$var1 = $var1\n";
print "\$var2 = $var2\n";

print "\n";
($var3, $var4, $var5 ,$var6) = @array; # $var1 = 1, $var2 = 2, $var3 =3 ,$var = "" (null)
print "\$var3 = $var3\n";
print "\$var4 = $var4\n";
print "\$var5 = $var5\n";
print "\$var6 = $var6\n";

print "\n";
print "\$var_bian = $array[1]";   (1,2,3) $var_bian = 2

输出结果:

2.4 数组的长度

变量 = 数组;=》变量值就是数组长度

#!/usr/bin/perl

@array = (1, 2 ,3);
$chang_du = @array;
print "\$changdu = $chang_du\n";

输出结果:

数组长度返回的是数组物理大小,而不是元素的个数,我们可以看以下实例:

#!/uer/bin/perl
 
 #数组大小
@array = (1,2,3);
$array[50] = 4;
 
$size = @array;
$max_index = $#array;
 
print "Size_number:  $size\n";
print "Suo_Yin_Max: $max_index\n";

输出结果:

2.5 子数组(数组切割)

#!/usr/bin/perl

@array = (1, 2 ,3);
#子数组
@array_zi = @array[1, 2];
print "array_zi = @array_zi\n";

输出结果:

2.6 数组合并

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

#!/usr/bin/perl
 
@numbers = (1,3,(4,5,6));
 
print "numbers = @numbers\n";

输出结果:

也可以两个数组合成:

#!/usr/bin/perl
 
@odd = (1,3,5);
@even = (2, 4, 6);
 
@numbers = (@odd, @even);
 
print "numbers = @numbers\n";

输出结果:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值