我正在尝试循环浏览其中包含有关系统及其 IP 地址的各种信息的 AoA。我正在成功运行命令以获取所需的信息。当我在循环中有 print 语句时,它会为我提供我正在寻找的正确信息。但是,当我之后运行创建 CSV 文件时,似乎只有每种类型系统的最后一个值被保存并覆盖所有以前的值。
foreach my $row(@data){
my @columns;
if((index($row->[0], 'Model_A') != -1)) != -1)){
my @result = qx(echo y | command goes here);
foreach my $i(@result){
if($i =~ /Port ID:\s+(\d)/){
$columns[2] = $1;
} elsif($i =~ /IP ID:\s+\d+)/){
$columns[3] = $1;
}
elsif(index($i, 'Port Status') != -1){
$columns[0] = $row->[0];
$columns[1] = $row->[1];
print "$columns[0] \t $columns[1] \t $columns[2] \t $columns[3] \n";
push (@output, \@columns);
}
}
}
}
}
示例输出应该类似于
- Model_A 系统 1 0
地址_0 Model_A 系统 1 1
地址_1 Model_A 系统 1 2
地址_2 Model_A 系统 1 3 地址_3
但结果却是
- Model_A 系统 1 3
地址_3 Model_A 系统 1 3地址_3 Model_A 系统 1 3
地址_3 Model_A 系统 1 3
地址_3
但是,在我的打印语句中,它会在将列添加到输出数组之前给出正确的值。