zoukankan      html  css  js  c++  java
  • Perl--引用

      在C 里,间接的最常见的形式就是指针,它可以让一个变量 保存另外一个变量的内存地址。在 Perl 里,间接的最常
    见的形式是引用。
    
    
    创建引用:
    
    你可以用一个反斜杠创建一个指向任何命名变量或者子过程的引用。(你还可以把它用于一个匿名 标量值,比如 7
    或 "camel",尽管你通常并不需要这些东西。)乍一看,这个操作符的作用类似 C 里的 &(取址)操作符。
    下面是一些例子:
    $scalarref = $foo;
    $constref = 186_282.42;
    $arrayref = @ARGV;
    $hashref = \%ENV;
    $coderef = &handler;
    $globref = *STDOUT;
    
    
    8.3.7 闭合(闭包)
    
    我们早些时候谈到过用一个没有名字的 sub {} 创建匿名子过程。你可以把那些子过程看作是在 运行时定义,这就
    意味着它们有一个生成的时间和一个定义的地点。在创建子过程的时候,有些变量 可能在范围里,而调用子过程的
    时候,可能有不同的变量在范围里。
    先让我们暂时忘掉子过程,先看看一个指向一个词法变量的引用:
    {
    my $critter = "camel";
    $critterref = $critter;
    }
    $$critterref 的数值仍将是“camel”,即使在离开闭合的花括弧之后 $critter 消失了也如此。 但是 $critterref 也
    可以指向一个指向了 $critter 的子过程:
    {
    my $critter = "camel";
    $critterref = sub { return $critter };
    }
    
    [oracle@jhoa 2]$ cat 6.pl 
    {
    my $critter = "camel";
    $critterref = $critter;
    }
    print "$critter is $critter
    ";
    print "$critterref is $critterref
    ";
    
    [oracle@jhoa 2]$ perl 6.pl 
    $critter is 
    $critterref is SCALAR(0x10c1060)
    
    
    
    引用的本质是指针,存放的不是值,而是其他变量的地址。
    不管这个地址怎么使用,它还是一个简单变量,所以用$表示。使用时通过此地址访问变量的值。
    用创建变量 取变量地址
    
    [oracle@jhoa 2]$ cat a2.pl 
    {my $a = "hello world";$ra=$a;} print "$ra
    ";
    {my $a = "hello world";$ra=$a;} print "$$ra
    ";
    [oracle@jhoa 2]$ perl a2.pl 
    SCALAR(0xea9f030)
    hello world
    
    
    1.引用变量的销毁:
    [oracle@jhoa 2]$ cat a3.pl 
    {
     my $ra;
    {
     my $a = "hello world";
       $ra = $a;
    }
    print "$a is $a
    ";
    print "$ra is $$ra
    ";
    }
    print "$ra is $$ra
    ";
    [oracle@jhoa 2]$ perl a3.pl 
    $a is 
    $ra is hello world
    $ra is 
    

  • 相关阅读:
    音箱摆放
    SQL Server数据库开发的二十一条军规
    一年级程序员读《应用框架的设计与实现--.NET平台》
    JavaScript调用现成Word模板完成打印
    Asp.net下C#调用Word模版实例
    Android线程池
    Windows系统编程之异步I/O和完成端口 [北极星2003 看雪论坛]
    [转]异步IO、APC、IO完成端口、线程池与高性能服务器
    [转]Windows 内核(WRK)简介
    [转]IOCPSocket IO模型终结篇
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351970.html
Copyright © 2011-2022 走看看