zoukankan      html  css  js  c++  java
  • Perl 数组应用详解(push, pop, shift, unshift)

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

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

    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, 2, 3, 4, 5, 6 );

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

    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 "@array ";              # 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, 3, 2, @array1 );

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

    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, 3, 2 );

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

    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:     @replaced ",
          "resulting in: @array ";

    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(" ", @array);

    print "$replaced ",

    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 "$count1 ";
    print "$count2 ";

    output:

    7
    7

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

    #!/usr/bin/perl

    use strict;
    use warnings;

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

    # 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 ";
    print "Lexically:   @sortedLexically ";
    print "Numerically: @sortedNumerically ";


    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

  • 相关阅读:
    谈谈node(1)
    怎么调用html5的摄像头,录音,视频?
    es6-块级作用域let 和 var的区别
    输入手机号自动分隔
    How do I know which version of Javascript I'm using?
    PHP的类中的常量,静态变量的问题。
    【转】马拉松式学习与技术人员的成长性
    JavaScript Prototype in Plain Language
    Promise编程规范
    XMLHttpRequest对象解读
  • 原文地址:https://www.cnblogs.com/qiyuexin/p/8824381.html
Copyright © 2011-2022 走看看