美文网首页
Perl 列表与数组(二)

Perl 列表与数组(二)

作者: PETJO | 来源:发表于2021-06-08 13:15 被阅读0次

    5. 列表直接量

    • 小括号内用逗号隔开的一串数据(列表元素);
    • 范围操作符 .. 可以自动创建它两侧标量值之间的所有取值;
    • 范围操作符只能从小到大累加,从大到小空列表;
    • 列表中的元素可以是表达式。
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    print (1,2,3);
    print "\n\n\n";
    
    print (1,2,3,);                # 逗号被忽略
    print "\n\n\n";
    
    print ("a","b","c");
    print "\n\n\n";
    
    print ("a",1,"b",2,"c",3);
    print "\n\n\n";
    
    print ();                      # 空列表 
    print "\n\n\n";
    
    print (1..10);
    print "\n\n\n";
    
    print (10..5);                 # 范围操作符从大到小,得到空列表
    print "\n\n\n";
    
    print (1.3..10.6);             # 小数点部分去掉后取范围
    print "\n\n\n";
    
    print ("a".."f");              # 字母取范围值
    print "\n\n\n";
    
    print (1,4..10,16);
    print "\n\n\n";
    
    my $m = 5;
    my $n = 15;
    print ($m,10);                 # 表达式当前值
    print "\n\n\n";
    
    print ($m,$n);
    print "\n\n\n";
    
    print ($m..$n);
    print "\n\n\n";
    

    6. qw简写

    • 避免反复键入引号和逗号;
    • qw表示:quoted word(用引号引用的词)或者quoted by whitespace(用空白引用的词),perl当成单引号内的字符串进行处理(qw内无法使用 \n转义字符或 $fred变量内插),空白符(如空格、制表符、换行符)被抛弃;
    • qw列表中无法进行注释;
    • 任意标点符号都可以作为定界符(delimiter)
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    my @array = ("fred", "barney", "betty", "wilma", "dino");
    print "@array\n-----\n";
    
    my @array_qw = qw( fred barney betty wilma dino );
    print "@array_qw\n\n\n";
    
    my @array_qw1 = qw[ fred barney betty wilma dino ];
    my @array_qw2 = qw# fred barney betty wilma dino #;
    my @array_qw3 = qw! fred barney betty wilma dino !;
    my @array_qw4 = qw[ fred barney betty wilma dino ];
    my @array_qw5 = qw[ fred barney betty wilma dino ];
    print "@array_qw1\n\n\n";
    print "@array_qw2\n\n\n";
    print "@array_qw3\n\n\n";
    print "@array_qw4\n\n\n";
    print "@array_qw5\n\n\n";
    
    # 抛弃空白字符
    my @array_qw6 = 
    qw(
        fred    
        barney 
        betty 
        wilma 
        dino
    );
    print "@array_qw6 \n\n\n";
    
    # qw列表中无法进行注释,#,\n,$等都为普通字符
    my $fred = "fred";
    my @array_qw7 = 
    qw(
        $fred    # name
        \n
        barney 
        betty 
        wilma 
        dino
    );
    print "@array_qw7 \n\n\n";
    

    7. 列表的赋值

    • 标量值可被赋值到标量变量,列表值也可以被赋值到标量变量。
    • 列表是在赋值运算开始之前建立的,因而Perl 交换两个变量的值相当容易。
    • 对列表赋值时多出来的值会被忽略掉,如果变量的个数多过给定的列表值个数,多出来的变量将会设成 undef(空列表)。
    • 列表中需要 undef可以显式写明。
    • 数组只能包含标量,不能包含其他数组,数组无法成为列表里的元素,数组名会被展开成元素列表。
    • 赋值之前数组变量的值是空列表,即 ()。
    # 列表值赋值到标量变量
    my($fred, $barney, $dino) = ("flinstone", "rubble", undef);
    print $fred . "\n";
    print $barney . "\n";
    print $dino . "\n";
    
    # 交换两个变量的值
    ($fred, $barney) = ($barney, $fred);
    print $fred . "\n";
    print $barney . "\n";
    
    my @betty;
    $betty[0] = "age";
    $betty[1] = "year";
    ($betty[0], $betty[1]) = ($betty[1], $betty[0]);
    print $betty[0] . "\n";
    print $betty[1] . "\n";
    
    ($fred, $barney) = qw{ slate granite flintstone rubble }; #忽略末尾2个元素
    print $fred . "\n";
    print $barney . "\n";
    
    my ($wilma, $dino1) = qw{ flintstone };    # dino的值为undef
    print $dino1 . "\n";
    
    my @rock;
    ($rock[0], $rock[1], $rock[2], $rock[3]) = qw{ talc mica feldspar quartz };
    print "@rock\n";
    

    相关文章

      网友评论

          本文标题:Perl 列表与数组(二)

          本文链接:https://www.haomeiwen.com/subject/vjfxeltx.html