Perl中对数组进行操作的操作符

pop和push操作符

pop和push操作符是对数组的“尾端”进行处理
pop操作符:取出数组中最后一个元素并将其作为返回值返回,常用于删除数组中的最后一个元素

@array = 5..9;    #原数组array是(5,6,7,8,9)
$fred = pop(@array); #$fred 变成9, @array现在是(5,6,7,8)
$barney = pop @array; #$barney 变成8,@array现在是(5,6,7)

注:如果数组是空的,pop什么也不做,直接返回undef

push操作符:添加一个元素(或一串元素)到数组尾端

@array = (5,6);
push (@array, 0);  # @array现在是(5,6,0)
push @array, 8;  # @array现在是(5,6,0,8)
push @array, 1..10;  # @array得到了10个新元素
@others = qw / 9 0 2 1 0/;
push @array, @others; # @array又得到了5个新元素 

shift和unshift操作符

shift和unshift操作符是对数组的“开头”进行相应的处理

@array = qw/ dino fred barney /;
$m = shift(@array);  # $m变成"dino",@array现在是("fred","barney")
$n = shift @array;  # $n变成"fred", @array现在是("barney")
shift @array;  # 现在@array变空了
$o = shift @array;  # $so变成undef,@aaray还是空的
unshift (@array, 5);  # @array现在仅包含一个元素的列表(5)
unshift (@array, 4);  # @array现在是(4, 5)
@others = 1..3;
unshift @array, @others;  # @array现在是(1,2,3,4,5)

splice操作符

splice操作符是对数组“中间”进行相应的处理
splice可接受4个参数:

splice x1, x2, x3, x4

 - x1:要操作的目标数组
 - x2:要操作的一组元素开始的位置
 - x3:指定要操作的元素长度
 - x4:要替换的列表

示例1:

@array = qw( A B C D E );
@removed = splice @array, 2; #在原来的数组中删掉C及其后的元素
                             #@removed变成qw(C D E)
                             #原先的@array变成 qw(A B)

示例2:

@array = qw( A B C D E );
@removed = splice @array, 1, 2, qw(F); #删除B和C
                                       #@removed变成qw(B C)
                                       #@array变成qw(A F D E)

示例3:

@array = qw( A B C D E );
@removed = splice @array, 1, 0,qw(F); #什么元素都不删
                                     #@removed变成qw()
                                     #@array变成qw(A F B C D E)

reverse操作符

reverse操作符会读取列表(或数组)的值,并按相反的次序返回该列表
示例:

@fred = 6..10;
@barney = reverse(@fred); #得10,9,8,7,6
@wilma = reverse 6..10; #同上
@fred = reverse @fred; #将逆序后的结果放回原来那个数组

注:reverse会返回次序相反的列表,但它不会修改传进来的参数。假如返回值无处可去,那么操作也是无意义的。

reverse @fred #错误——这不会修改@fred的值

sort操作符

sort操作符会读取列表(或数组)的值,根据内部的字符编码顺序对它们进行排序。对字符串而言,就是字符在计算机内部表示的代码点。
示例:

@rocks = qw/ bedrock slate rubble granite /;
@sorted = srot(@rocks); #得bedrock,granite,rubble,slate

注:与reverse操作符一样,你必须将排序后的结果存回数组

each操作符

对数组调用each,会返回数组中下一个元素索对应的两个值——该元素的索引以及该元素的值。

use 5.012
my @rocks = qw/ bedrock slate rubble granite /;
while( my( $index,$value ) = each @rocks){
    say "$index:$value";
}

如果不用each来实现,可以根据索引从小到大依次遍历,然后借助索引值取得元素的值

@rocks = qw/ bedrock slate rubble granite /;
foreach $index ( 0..$#rocks ){
    print "$index:$rocks[$index]\n";
}

你可能感兴趣的:(Perl入门笔记)