Chinaunix首页 | 论坛 | 博客
  • 博客访问: 57829
  • 博文数量: 20
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-02 09:49
文章分类
文章存档

2014年(2)

2013年(11)

2012年(5)

2011年(2)

我的朋友

分类: LINUX

2013-10-17 15:23:58

原文地址:perl下数组的应用 作者:huifeideluotuo

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 "@array\n";
}

[root@drbd-2 crontab]# ./push.pl
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5


2,pop

#!/usr/bin/perl
#######

use strict;
use warnings;

my @array = ( 1, 2, 3, 4, 5, 6 );

while (@array) {
    my $firstTotal = pop(@array);
    print "@array\n";
}

[root@drbd-2 crontab]# ./pop.pl
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1


3,shift

#!/usr/bin/perl
#######

use strict;
use warnings;

my @array = ( 1, 2, 3, 4, 5, 6 );

while (@array) {
    my $firstTotal = shift(@array);
    print "@array\n";
}

[root@drbd-2 crontab]# ./shift.pl
2 3 4 5 6
3 4 5 6
4 5 6
5 6
6



4,unshift

#!/usr/bin/perl
#######

use strict;
use warnings;

my @array = ();

for ( my $i = 1; $i <= 5; ++$i ) {
   unshift( @array, $i );         # add $i to front of @array
   print "@array\n";              # display current @array
}

[root@drbd-2 crontab]# ./unshift.pl
1
2 1
3 2 1
4 3 2 1
5 4 3 2 1




5,splice
操作数组中间部分的函数,该函数主要有2个作用:

1,向数组中间插入内容

#!/usr/bin/perl

use strict;
use warnings;

my @array = ( 0 .. 6 );
my @array1 = ( 'a' .. 'd' );

my @replaced = splice( @array, 3, 2, @array1 );

print "replaced:     @replaced\n",
      "with:         @array1\n",
      "resulting in: @array\n\n";

[root@drbd-2 crontab]# ./splice.pl
replaced:     3 4
with:         a b c d
resulting in: 0 1 2 a b c d 5 6


2,删除数组元素

#!/usr/bin/perl

use strict;
use warnings;

my @array  = ( 0 .. 6 );
my @array1 = ( 'a' .. 'd' );

my @replaced = splice( @array, 3, 2 );

print "replaced:     @replaced\n",
      "resulting in: @array\n\n";

[root@drbd-2 crontab]# ./splice.pl
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:     @replaced\n",
      "resulting in: @array\n\n";

[root@drbd-2 crontab]# ./splice.pl
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 "$replaced\n",

[root@drbd-2 crontab]# ./join.pl
0
1
2
3
4
5
6




7,split
把字符串进行分割并把分割后的结果放入数组中

[root@drbd-2 crontab]# perl -le '$p=q(/var/ftp/test);@a=split(/\/ftp\//,$p);print $a[1];'
test
[root@drbd-2 crontab]# 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 "$count1\n";
print "$count2\n";

[root@drbd-2 crontab]# ./join.pl
7
7



9,sort
对数组元素进行排序

#!/usr/bin/perl

use strict;
use warnings;

my @array    = ( 0 .. 9 );
my @reversed = reverse @array;
print "Original:    @array\n";
print "Reversed:    @reversed\n\n";

# create an unsorted array of numbers and sort it
my @array2            = ( 100, 23, 9, 75, 5, 10, 2, 50, 7, 96, 1, 40 );
my @sortedLexically   = sort @array2;
my @sortedNumerically = sort { $a <=> $b } @array2;
print "Unsorted:    @array2\n";
print "Lexically:   @sortedLexically\n";
print "Numerically: @sortedNumerically\n";


[root@drbd-2 crontab]# ./join.pl
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
阅读(844) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~