首先,如果我在即将发布的帖子中有任何术语错误,请原谅,这对我来说仍然很新。
一些背景知识,我有一个脚本可以检查我们存档的网络配置中的一组特定设置。因此,脚本会运行许多检查,并将结果添加到该检查的数组中。
例如,检查以确保配置 syslog 被添加到名为 @internalsyslogerror 的数组中
在所有检查都运行后,所有检查的数组都被添加到哈希中,键是设备名称。
注意所有代码都使用严格,使用警告
使用以下命令;
$results{$configs} = [@internalsyslogerror, @bordersyslogerror,
@borderntperror, @borderntperror, @internalntperror,
@bordertacacserror, @internaltacacserror, @enablepasswordchecks,
@internalsnmpkeyserror, @timezoneerror, @configregistererror,
@bannererror, @bootregistererror, @domainnameerror];
我遇到的问题是提取此信息的最优雅的方式是什么,我想减少为了向脚本添加新检查而必须进行的更改量。目前我必须将附加数组添加到上面的代码中,然后将取消引用部分添加到处理它的子程序中。
这是目前我要取消引用并将其输出到数组中所做的工作,然后我会通过电子邮件发送该数组。
foreach my $k (keys %results) {
push @results, "<b>$k</b><br>";
if (defined $results{$k}[0] ){
push @results, "$results{$k}[0]";
}
if (defined $results{$k}[1] ){
push @results, "$results{$k}[1]";
}
if (defined $results{$k}[2] ){
push @results, "$results{$k}[2]";
}
if (defined $results{$k}[3] ){
push @results, "$results{$k}[3]";
}
if (defined $results{$k}[4] ){
push @results, "$results{$k}[4]";
}
if (defined $results{$k}[5] ){
push @results, "$results{$k}[5]";
}
if (defined $results{$k}[6] ){
push @results, "$results{$k}[6]";
}
if (defined $results{$k}[7] ){
push @results, "$results{$k}[7]";
}
if (defined $results{$k}[8] ){
push @results, "$results{$k}[8]";
}
if (defined $results{$k}[9] ){
push @results, "$results{$k}[9]";
}
if (defined $results{$k}[10] ){
push @results, "$results{$k}[10]";
}
if (defined $results{$k}[11] ){
push @results, "$results{$k}[11]";
}
if (defined $results{$k}[12] ){
push @results, "$results{$k}[12]";
}
if (defined $results{$k}[13] ){
push @results, "$results{$k}[13]";
}
}
问题是,我可以做我上面做的事情,但是以某种方式“即时”生成代码
谢谢