gpt4 book ai didi

arrays - 访问散列数组的更优雅的方式

转载 作者:行者123 更新时间:2023-12-02 02:15:52 25 4
gpt4 key购买 nike

首先,如果我在即将发布的帖子中出现任何术语错误,请表示歉意,这对我来说仍然很新。

一些背景知识,我有一个脚本可以检查我们存档的网络配置中的一组特定设置。因此,该脚本运行许多检查,并将结果添加到该检查的数组中。

例如确保 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]";
}
}

问题是,我可以做上面做的事情,但以某种方式“即时”生成代码

谢谢

最佳答案

foreach my $k (keys %results) { 
push @results, "<b>$k</b><br>";
for my $result (@{$results{$k}) {
next if (!defined $result);
push @results, $result;
}
}

甚至

foreach my $k (keys %results) { 
push @results, "<b>$k</b><br>";
push @results, grep { defined $_ } @{$results{$k}};
}

编辑:修复了上次推送中的拼写错误...

关于arrays - 访问散列数组的更优雅的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6423605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com