vars - Perl 语言的预声明全局变量名称的 pragma
use vars qw($frob @mung %seen);
注意:对于在当前包中单个作用域内使用的变量,此 pragma 提供的功能已被 Perl v5.6.0 或更高版本中提供的 our
声明所取代,建议不要使用此 pragma。请参阅 "our" in perlfunc.
此 pragma 将预声明列表中所有变量的名称,允许您在 use strict
下使用它们,并禁用对它们的任何拼写错误警告。
与影响 $^H
hints 变量的 pragma 不同,use vars
和 use subs
声明不会按词法作用域限制在它们出现的代码块中:它们会影响它们出现的整个包。无法使用 no vars
或 no subs
取消这些声明。
诸如 AutoLoader 和 SelfLoader 之类的包,它们延迟加载包中的子例程,可能会在使用 my()
定义的包局部变量方面造成问题。虽然 vars pragma 无法复制包局部变量的效果(在包外部完全透明),但它可以通过预声明全局符号作为可接受的替代方案,确保它们可供以后加载的例程使用。