1
我循環通過XML節點,每個節點都創建一個羣組,例如以下節點:Perl的foreach循環兩難困境
<node name="ps1_uat1" host="" port="20014" />
<node name="ps1_uat2" host="" port="20014" />
<node name="ps1_uat3" host="" port="20014" />
...會生成以下組:
<nodeGroup name="ps1" nodes="" />
一切都很好有,但與下面的代碼通過循環時,我得到我的循環丟失,它打印出:
<nodeGroup name="ps1" nodes="ps1_it," />
<nodeGroup name="ps1" nodes="ps1_it, ps1_uat1," />
<nodeGroup name="ps1" nodes="ps1_it, ps1_uat1, ps1_uat2," />
<nodeGroup name="ps1" nodes="ps1_it, ps1_uat1, ps1_uat2, ps1_uat3," />
我只希望它打印出最後一個,我試圖收集所有相似的節點,並將它們推入@nodes
數組,然後將其打印在節點屬性中。
我的Perl代碼:
foreach my $group (@groups) {
my @nodes;
foreach my $node (@nodenames) {
chomp($group);
chomp($node);
if ($node =~ m/$group/) {
push (@nodes, "$node,");
my $groupxml = "\t<nodeGroup name=\"$group\" nodes=\"@nodes\" \/>\n";
print ODSERVERFILE $groupxml;
}
}
}
任何援助表示讚賞。
這樣做了。這麼簡單,但錯過了。非常感謝你。 –
@NickA for循環往往很棘手;) – Nikhil