Perl的数组操作有四大常用函数:
push:从数组的末尾加入元素。
pop :从数组的末尾取出元素
shift:?从数组的开头取出元素
unshift:从数组的开头加入元素
1、push
#!/usr/bin/perl
use strict;
use warnings;
my @array = ();
for ( my $i = 1 ; $i <= 5 ; ++$i ) {
??? push @array,$i;
??? print "@arrayn";
}
output:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
2、pop
#!/usr/bin/perl
####<pop>###
use strict;
use warnings;
my @array = ( 1,2,3,4,5,6 );
while (@array) {
??? my $firstTotal = pop(@array);
??? print "@arrayn";
}
output:
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
3、shift
#!/usr/bin/perl
####<shift>###
use strict;
use warnings;
my @array = ( 1,6 );
while (@array) {
??? my $firstTotal = shift(@array);
??? print "@arrayn";
}
output:
2 3 4 5 6
3 4 5 6
4 5 6
5 6
6
4、unshift
#!/usr/bin/perl
####<unshift>###
use strict;
use warnings;
my @array = ();
for ( my $i = 1; $i <= 5; ++$i ) {
?? unshift( @array,$i );???????? # add $i to front of @array
?? print "@arrayn";????????????? # display current @array
}
output:
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1
另外,perl的数组还有其它重要函数,如splice、subtr、split、join、sort等:
5、splice 操作数组中间部分的函数:
5.1、向数组中间插入内容
#!/usr/bin/perl
use strict;
use warnings;
my @array = ( 0 .. 6 );
my @array1 = ( 'a' .. 'd' );
my @replaced = splice( @array,@array1 );
print "replaced:???? @replacedn",
????? "with:???????? @array1n",
????? "resulting in: @arraynn";
output:
replaced:???? 3 4
with:???????? a b c d
resulting in: 0 1 2 a b c d 5 6
5.2、删除数组元素
#!/usr/bin/perl
use strict;
use warnings;
my @array? = ( 0 .. 6 );
my @array1 = ( 'a' .. 'd' );
my @replaced = splice( @array,2 );
print "replaced:???? @replacedn",
????? "resulting in: @arraynn";
output:
replaced:???? 3 4
with:???????? a b c d
resulting in: 0 1 2 5 6
删除到末尾
#!/usr/bin/perl
use strict;
use warnings;
my @array? = ( 0 .. 6 );
my @array1 = ( 'a' .. 'd' );
my @replaced = splice( @array,3 );
print "replaced:???? @replacedn",
????? "resulting in: @arraynn";
output:
replaced:???? 3 4 5 6
resulting in: 0 1 2
?
6、join 连接列表中的各个分离的串,生成一个新的串,返回一个标量!
#!/usr/bin/perl
use strict;
use warnings;
my @array = ( 0 .. 6 );
my $replaced = join("n",@array);
print "$replacedn",
output:
0
1
2
3
4
5
6
?
7、split
把字符串进行分割并把分割后的结果放入数组中
?perl -le '$p=q(/var/ftp/test);@a=split(//ftp//,$p);print $a[1];'
test
?perl -le '$p=q(/var/ftp/test);@a=split(//ftp//,$p);print $a[0];'
/var
?
8、scalar
统计数组的长度,一般我们不用这个,直接将数组赋值给标量即可。
#!/usr/bin/perl
use strict;
use warnings;
my @array = ( 0 .. 6 );
my $count1 = @array;
my $count2 = scalar @array;
print "$count1n";
print "$count2n";
output:
7
7
?
9、sort
对数组元素进行排序
#!/usr/bin/perl
use strict;
use warnings;
my @array??? = ( 0 .. 9 );
my @reversed = reverse @array;
print "Original:??? @arrayn";
print "Reversed:??? @reversednn";
# create an unsorted array of numbers and sort it
my @array2??????????? = ( 100,23,9,75,10,50,7,96,1,40 );
my @sortedLexically?? = sort @array2;
my @sortedNumerically = sort { $a <=> $b } @array2;
print "Unsorted:??? @array2n";
print "Lexically:?? @sortedLexicallyn";
print "Numerically: @sortedNumericallyn";
output:
Original:??? 0 1 2 3 4 5 6 7 8 9
Reversed:??? 9 8 7 6 5 4 3 2 1 0
Unsorted:??? 100 23 9 75 5 10 2 50 7 96 1 40 Lexically:?? 1 10 100 2 23 40 5 50 7 75 9 96 Numerically: 1 2 5 7 9 10 23 40 50 75 96 100