内容

名称

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 varsuse subs 声明不会按词法作用域限制在它们出现的代码块中:它们会影响它们出现的整个包。无法使用 no varsno subs 取消这些声明。

诸如 AutoLoaderSelfLoader 之类的包,它们延迟加载包中的子例程,可能会在使用 my() 定义的包局部变量方面造成问题。虽然 vars pragma 无法复制包局部变量的效果(在包外部完全透明),但它可以通过预声明全局符号作为可接受的替代方案,确保它们可供以后加载的例程使用。

请参阅 "Pragmatic Modules" in perlmodlib.