仅需要单个元素时请勿用切片

1.左值切片

在赋值操作中,如果左边是一个切片,那就相当于对这个切片中变量元素依此赋值。写法上更轻便,而且等效于使用具名变量:

($giant[2],$giant[3]) = ("david","xinxin");
@giant[1,2] = ("david","xinxin");

2.不要混淆切片和元素

养成时刻检查类似@a[0]这样的单个元素切片的习惯。一般来讲,单个元素切片并不常见。

如果单个元素的切片出现在赋值左边,多半是理解上的错误。

3.方便而实用的切片

my ($uid,$gid) = (stat $file) [4,5] ;
my $last = (sort @list)[-1];
my $field_two = (split /:/)[1];
@list[5..9]  = reverse @list[ 5..9];
@list[ reverse 5 ..9 ]= @list[5..9];
#切片让两个元素交换变得非常简单
@a[$n,$m] = @a[$m,$n];
@item{'old','new'} = @item{'new',''old'};
'

4.快速方便的创建散列

#创建以A到Z为键,1到26为值的散列
@char_num{ 'A'..'Z'} = 1..26 ;
#将一个新的元素合并到已有的散列中去
@old{keys %new} = values %new;
#下边的方式更简练,但是效率不如上边的
%old = (%old,%new);
#将一个散列从另一个散列中移除的方法
delete  @name{keys @invalid};
原文地址:https://www.cnblogs.com/tjxwg/p/2919414.html