zoukankan      html  css  js  c++  java
  • perl的匿名引用

    perl中列表不能嵌套,只能通过引用的方式构建复杂的结构。引用其实就是c中的指针,只不过perl中对指针,也就是一个地址的声明和取值有自己的一套方法。

    1、先复习普通标量的引用方法:

    [vagrant@bio ~]$ cat t1.pl
    use v5.26;
    use warnings;
    my $a=123;
    my $p=$a;
    say $a;
    say $p;
    say ${$p};
    say $$p;
    say "==========";
    my @arr=(10,11,12);
    my $pArr=@arr;
    say @arr;
    say $pArr;
    say ${$pArr}[0];
    # say $pArr[0];
    say $pArr->[0];
    [vagrant@bio ~]$ perl t1.pl
    123
    SCALAR(0xd8f6d0)
    123
    123
    ==========
    101112
    ARRAY(0xd9c7f0)
    10
    10

    2、以一个数组说明:

    [vagrant@bio ~]$ cat t1.pl
    use v5.26;
    use warnings;
    my @arr1=(1,2,3); #声明一个数组
    my @arr2=(4,5,6); #声明另一个数组
    $arr1[3]=@arr2;  #把数组arr1中下标为3的值,存放一个引用标量,该标量存放对数组arr2的引用
    say @arr1;   #打印数组1
    [vagrant@bio ~]$ perl t1.pl
    123ARRAY(0x1e47798)

    3、如果想对数组中的引用中的结构(这里是另一个数组),进行取值,有3中方法。

    [vagrant@bio ~]$ cat t1.pl
    use v5.26;
    use warnings;
    my @arr1=(1,2,3);
    my @arr2=(4,5,6);
    $arr1[3]=@arr2;
    say @arr1;
    #say $arr1[3]  #错误
    say $arr1[3][0];  #第一种最简单,好像一个2维数组
    say ${$arr1[3]}[0];  #标准的引用调用方法
    say $arr1[3]->[0];   #瘦箭头引用方法
    [vagrant@bio ~]$ perl t1.pl
    123ARRAY(0x14627d8)
    4
    4
    4
    [vagrant@bio ~]$
  • 相关阅读:
    Amazon Hiring Campus 2013
    Java历史
    vue配置环境踩坑
    ES6 第十八节 模块化操作
    ES6 第十七节 class类的使用
    ES6 第十六节 promise对象的使用
    ES6 第十五节 用proxy进行预处理
    ES6 第十四节 map数据结构
    ES6 第十三节 Set和WeakSet数据结构
    ES6 第十二节 Symbol在对象中的作用
  • 原文地址:https://www.cnblogs.com/litifeng/p/8614974.html
Copyright © 2011-2022 走看看