perl 函数 左值属性

5.3 左值属性:


除非你定义子过程返回一个左值,否则你不能从子过程中返回一个可以修改的标量值:

[oracle@oadb 6]$ cat a6.pl 
my $val;
sub canmod :lvalue  {
$val;
};
sub nomod {
$val;

};
canmod() = 5;
print $val;
nomod()=5;
[oracle@oadb 6]$ perl a6.pl 
Can't modify non-lvalue subroutine call in scalar assignment at a6.pl line 11, near "5;"
Execution of a6.pl aborted due to compilation errors.


不能修改 非左值函数请求在标量赋值

canmod() = 5; # 给 $val 赋值为 5

nomod() = 5; # 错误


子过程可以用一个&开头命名,不过调用子过程的时候这个趣味字符是可选的。

子过程通常不认为是左值得,

不过最近版本的Perl允许你从一个子过程返回一个左值赋予该子过程

这样看起来可能像给你在给那个子过程赋值:

原文地址:https://www.cnblogs.com/hzcya1995/p/13349865.html