Я хочу добавить способность моего сценария концепции перебирать один и тот же цикл команд над списком серверов, а не только на одном сервере.Безопасно ли вставить петлю foreach в другую петлю foreach
Безопасно ли иметь петлю foreach внутри петли foreach. Или есть другой способ сделать это?
# Create an empty hash table for discovered virtual machines
my %virtual_machines =();
my @getallvms = $ssh1->capture('vim-cmd vmsvc/getallvms');
# Remove first line from ESX\ESXi output
shift @getallvms;
# Collect data from ESX\ESXi output
foreach my $server (@servers) {
foreach my $vm (@getallvms) {
# Match ID, NAME and VMX file name
$vm =~ m/^(?<ID> \d+)\s+(?<Name> \S+)\s+\[.+?\]\s+.+?\/(?<VMX> .+?\.vmx)/xm;
my $id = "$+{ID}";
my $name = "$+{Name}";
# Find the absolute path to the VMX file for each virtual machine
my $vmx_location = $ssh1->capture("find -name $+{VMX}");
}
}
Это часть моего сценария и базовая концепция, которую я хочу достичь в соответствии с первым ответом.
Вы изменяете элементы в этих циклах? – robert
Нет Я просто использую регулярное выражение и некоторую математику, чтобы собрать хэш данных, собранных с сервера (ов). Затем вне цикла он будет записан в файл XML. – ianc1215
вам не нужно ставить двойные кавычки вокруг ваших обращений к именованным группам захвата хэша –