Perl处理数组的一些技巧

(1)数组求和:不用写循环,直接调用 sum 函数

use List::Util qw/sum/;
my @a=qw(1 2 3 4 5 6 7 8);
my $sum= sum @a ;          # 得到 36

(2)求数组的最大、最小值:不需要逐个比较,直接调用 max 和 min 函数

use List::Util qw/max min/;
my @a=qw(1 2 3 4 5 6 7 8);
my $max= max @a ;          # 得到 8
my $min= min @a ;             # 得到 1

(3)输出数组指定位置元素

perl -e'@a=qw(1 2 3 4 5 6 7 8);print join("\t",@a[1,2,4,6])' #得到 2 3 5 7

但是如果用标量来指定位置,这样的方法就不行了

perl -e '@a=qw(1 2 3 4 5 6 7 8);$b="1,2,4,6";print join("\t",@a[$b])' #得到 2
需要借助eval函数
perl -e '@a=qw(1 2 3 4 5 6 7 8);$b="1,2,4,6";print join("\t",@a[eval($b)])' #得到 2 3 5 7
也可以通过数组指定位置
perl -e'@a=qw(1 2 3 4 5 6 7 8);@b=qw(1 2 4 6);print join("\t",@a[@b])' #得到 2 3 5 7
打印文件指定列,可以直接在命令行里借助上述方法实现

perl -lane'print join("\t",@F[1,2,3,4])' #打印第 2 3 4 5列

你可能感兴趣的:(Perl处理数组的一些技巧)