外部注入的全局变量



如何仅通过其名称访问外部注入的全局变量?

如果没有完全限定变量,该代码段不能工作:

#! /bin/perl
use strict; use warnings;
package Haus;
sub test{
print __PACKAGE__."n";
# Works
print "qualified var [$Haus::var]n"; # OK
# not working, why and how to achieve that without
# local "our $var" instead external injected
print "simple var [$var]n"; # NOK
}
package main;
$Haus::var=1;
Haus::test();

您(适当地)要求Perl不允许您在未声明$var之前使用$var

strict vars

如果您访问的变量既没有显式声明(使用myourstateuse vars中的任何一种),也没有完全限定,则会生成编译时错误。(因为这是为了避免变量自杀问题和微妙的动态作用域问题,仅仅一个local变量是不够好的。)看到"my"实际上,"我们的";在perfunc中,"状态"。在perlfunc中,"本地";

你需要做的就是声明$varour $var;use vars qw( $var );都可以。

您也可以删除请求(通过使用use strict; no strict qw( vars );),但是没有理由这样做,而且有很多理由不这样做。

我认为,你得到了一个编译时错误,因为结构是启用的,$var没有在你的例子中声明。用our声明变量,以便Perl知道您指的是$Haus::var。看到我们的

最新更新