Perl状态变量需要显式的包名称

bfnvny8b  于 2023-02-05  发布在  Perl
关注(0)|答案(1)|浏览(141)

我在使用状态变量时遇到了问题,我对“我的”变量有丰富的经验,但是使用“状态”变量并不容易。
下面是重现该问题的最小示例:

$ 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
laik7k3q

laik7k3q1#

根据state关键字的文档:
state仅在启用“state”feature或前缀为CORE::时可用。“state”功能在当前作用域中使用use v5.10(或更高版本)声明时自动启用。
下面是更改一行程序以避免错误的一种方法:

$ perl -e 'use strict; use feature "state"; sub test {state $string = ""; print $string; }'

相关问题