在我的工作场所,我们有一个webportal,它有一些核心文件,通过它们可以调用其他文件。因此,每个人都使用的用户名和项目ID都有一些变量,并在核心文件中定义。现在我必须避免使用use strict来使用相同的变量,但我不想这样做。那么如何获取核心文件中的变量列表呢?或者在基本情况下如何在使用strict时获取某个变量$ projectId中的值。
答案 0 :(得分:4)
任何未声明且以my
为词汇范围的变量都是包变量。您可以通过使用包限定变量名来引用没有strict
抱怨的包变量。因此,如果“核心文件”在默认的$projectid
包中定义变量main
,您可以使用
$main::projectid
$::projectid ($::foo is the same thing as $main::foo)
或者如果“核心文件”包含package
这样的package ProjectData;
语句,那么您可以使用
$ProjectData::projectid
如果全局变量来自当前包(例如,核心文件和脚本都使用默认包),那么您也可以通过使用strict
声明变量来满足our
关键字。
package main;
our $projectid;
# now $projectid refers to $main::projectid
...