我在使用状态变量时遇到了问题,我对“我的”变量有丰富的经验,但是使用“状态”变量并不容易。
下面是重现该问题的最小示例:
$ perl -e 'use strict; sub test {state $string = ""; print $string; }'
Global symbol "$string" requires explicit package name (did you forget to declare "my $string"?) at -e line 1.
Global symbol "$string" requires explicit package name (did you forget to declare "my $string"?) at -e line 1.
Execution of -e aborted due to compilation errors.
$ perl --version
This is perl 5, version 32, subversion 1 (v5.32.1) built for MSWin32-x64-multi-thread
1条答案
按热度按时间laik7k3q1#
根据state关键字的文档:
state
仅在启用“state”feature
或前缀为CORE::
时可用。“state”功能在当前作用域中使用usev5.10
(或更高版本)声明时自动启用。下面是更改一行程序以避免错误的一种方法: