Perl数组

数组变量以@开头,访问数组变量需要使用$+变量名称+索引值。

实例:

@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";

你可能感兴趣的:(Perl数组)