(本文参考博客)如有错误请指正!
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
- 数组变量创建时初始值为空列表:()。
- 因为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";
输出结果: