state
声明一个词法作用域变量,就像 my
。但是,这些变量永远不会被重新初始化,这与词法变量相反,词法变量在每次进入其封闭块时都会被重新初始化。有关详细信息,请参阅 "perlsub 中的持久私有变量"。
如果列出了多个变量,则必须将列表放在括号中。对于带括号的列表,undef
可用作虚拟占位符。但是,由于目前无法初始化此类列表中的 state 变量,因此这没有任何用处。
在同一作用域或语句中重新声明变量将“覆盖”之前的声明,创建一个新实例并阻止访问前一个实例。这通常是不可取的,并且如果启用警告,则会导致 shadow
类别中的警告。
仅当启用了"state"
功能或以 CORE::
为前缀时,才可以使用 state
。在当前作用域中声明 use v5.10
(或更高版本)时,将自动启用"state"
功能。