Perl 引用


返回子程序引用的子程序:对返回的子程序进行closure处理。Closure即如果你定义了一个函数,它就以最初定义的内容运行。
sub generate_greeting { my($greeting) = "hello world"; return sub {print $greeting}; } $rs = generate_greeting(); &$rs(); 
函数中的局部变量$greeting在函数执行结束后($rs = generate_greeting()),仍然存在(&$rs())。

同变量的引用,返回函数的引用,仍引用变量,引用计数不为0. 


[oracle@jhoa 2]$ cat a4.pl 
sub generate_greet {
my ($greeting) = "Hello world";
   return sub {print "$greeting
"};
}
$rs = &generate_greet;
print "$rs is $rs
";
##函数引用 
&$rs();
[oracle@jhoa 2]$ perl a4.pl 
$rs is CODE(0x1fdf42a0)
Hello world




[oracle@jhoa 2]$ cat a5.pl 
sub generate_greeting {
    my($greeting) = @_;     
    return sub {my($subject)= @_;print "$greeting $subject 
"; };
}
$rs1 = generate_greeting("hello");
&$rs1 ("world") ;

[oracle@jhoa 2]$ perl a5.pl 
hello world 


引用用创建,用类型符号+$a访问,访问引用,用$$a,@$a,&$a()。匿名结构返回的是引用。