数组变量以@开头,访问数组变量需要使用$+变量名称+索引值。
实例:
@hits = (25, 30, 40);
print"\$hits[0] = $hits[0]\n"
数组创建方式
以@变量开头。使用qw定义数组。
@array = qw/This is an array/;
print"\$array[0] = $array[0]\n"
使用qw定义第二个数组,返回的是一个字符串列表,数组元素以空格分隔。也可以使用多行来定义数组。也可以按照索引给数组赋值。
@array = qw/This is an array/;
print"\$array[0] = $array[0]\n";
$array[0] = 'That';
print"\$array[0] = $array[0]\n";
注意:数组索引是负数代表反向选取。
数组序列号
格式为起始值 ..结束值。
@var1 = (1..10);
@var2 = (10..20);
print "@var1\n";
print "@var2\n";
数组大小
数组的大小由数组中的标量上下文决定。
@array = (1,2,3);
$size = @array;
$max_index = $#array;
print "The size of array is $size.\n";
print "The largest index is $max_index.\n";
添加和删除数组元素
函数 | 描述 |
---|---|
push@Array, List | 将列表的值放在数组末尾。 |
pop@Array | 弹出数组的最后一个值并返回它。 |
shift@Array | 弹出数组的第一个值并返回它且数组的索引值减一。 |
unshift@Array,List | 将列表放在数组前面,并返回新数组的元素个数。 |
实例:
@array = ("Google", "Facebook", "Amazon");
print "\@array = @array.\n";
push(@array, "Apple");
print "\@array = @array.\n";
unshift(@array, "Microsoft");
print "\@array = @array.\n";
pop(@array);
print "\@array = @array.\n";
shift(@array);
print "\@array = @array.\n";
切割数组
我们可以切割一个数组并返回切割完成后的数组。但是要指定正确的索引值可以是正数也可以是负数。每个索引值使用逗号隔开。如果使用连续的索引可以用..来指定范围。
@array = ("Google", "Facebook", "Amazon", "Microsoft", "Apple");
@new_array = @array[0,1,2];
@new_array_two = @array[1..4];
print "\@new_array = @new_array.\n";
print "\@new_array_two = @new_array_two.\n";
@new_array3 = @array[1..6];
print "\@new_array3 = @new_array3\n";
替换数组中的元素
Perl中数组元素替换使用splice()函数,语法格式如下:
splice @array, offset [, Length [, List]]
参数说明:
- @array:要替换的数组。
- Offset:起始位置。
- Length:替换的元素个数。
- List:替换元素列表。
@nums = (1..20);
print "Before substituting @nums.\n";
splice(@nums, 5, 5, 21..25);
print "After substituting @nums.\n";
字符串转换为数组
将字符串转换为数组使用split()函数
split [Parent [, Expr [, Limit]]]
参数说明:
- Parent:分隔符默认为空格。
- Expr:指定字符串数。
- Limit: 如果指定该参数,则返回该数组的元素个数。
#!/usr/bin/perl
$var_url = "www.google.com";
$var_cors = "google,facebook,microsoft";
@web = split('\.', $var_url);
@companies = split(',', $var_cors);
foreach $ch (@web){
print "$ch\n";
}
foreach $company (@companies){
print "$company\n";
}
将数组转换为字符串
Perl中将数组转换为字符串使用的是join函数,join函数的格式为
join EXPR, LIST
参数说明:
- EXPR:连接符
- LIST:列表或数组
#!/usr/bin/perl
$var_url = "www.google.com";
@urls = split('\.', $var_url);
$newstr = join("-", @urls);
print "$newstr";
数组排序
数组排序使用的是sort函数,语法格式如下:
sort [SUBROUTINE] LIST
参数说明:
- SUBROUTINE:指定规则。
- LIST:列表或数组。
合并数组
数组元素是以逗号进行分割的,我们也可以使用逗号合并数组。
#!/usr/bin/perl
@numbers = (1, 2, (3, 4, 5));
print "numbers = @numbers\n";
#!/usr/bin/perl
@numbers1 = (1, 2, 3);
@numbers2 = (4, 5, 6);
@newnums = (@numbers1, @numbers2);
print "newnums = @newnums\n";
从列表中选择元素
一个列表可以当做数组使用,可以在列表后指定索引并读取元素。
#!/usr/bin/perl
$num = (1, 2, 3)[2];
print "$num\n";
也可以在列表后使用..指定范围,来读取指定范围内的元素。
#!/usr/bin/perl
@num = (1, 2, 3, 4, 5)[1..4];
print "@num\n";