小编Der*_*rpe的帖子

在perl中使运行时变量名称全局化

好吧,我看起来很努力,并尝试了无数的变化来让这个工作.我需要perl专家的一些帮助.

首先,我知道,我知道,不要使用动态变量名!嗯,我认为在这种情况下我需要这样做.我正在修复一个继承的脚本.它有一组用prefix+ "_"+ 形成的变量suffix.这开始很小,但前缀现在是一个约20的列表和大约50的后缀 - 一千个不同的变量.

在某些情况下,脚本循环遍历这些变量,eval用于检索单个值等.这一切都有效.问题是,在整个脚本中使用不同变量,无论是在前缀和/或后缀的循环内,还是只是硬编码的使用,都假设这些变量通过使用全局化use var qw($varname).use vars硬编码语句的数量已经失去控制.此外,有数千个过去的输入配置文件使用全局语法初始化这些变量,所有这些都需要继续工作.

我希望我可以通过循环中的全球化步骤来提高可维护性,一次动态创建一个变量名,然后使用use vars或全局化它们our.这里有一些代码来展示我的目标.我在这里展示了几个选项,但每个选项实际上都是一个单独的试验.我尝试了其他变化,不能再保持直线了.

my @prefixes   = ("one", "two", ..., "twenty");
my @suffixes   = ("1", "2", ..., "50");
my $globalvars = "";
for my $suffix (@suffixes) {
    for my $prefix (@prefixes) {
        # option 1 -- remainder of #1 outside of loop
        # NOTE: 1.a (no comma); 1.b (include comma between vars) …
Run Code Online (Sandbox Code Playgroud)

variables perl global-variables dynamic

4
推荐指数
2
解决办法
164
查看次数

标签 统计

dynamic ×1

global-variables ×1

perl ×1

variables ×1