내 개념 스크립트의 기능을 추가하여 하나의 서버가 아니라 서버 목록을 통해 동일한 루프 명령을 반복하려고합니다.다른 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
명명 된 캡처 그룹 해시 –