好吧,我看起来很努力,并尝试了无数的变化来让这个工作.我需要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)