将foreach循环插入另一个foreach循环是否安全

ian*_*215 1 scripting perl

我想为我的概念脚本添加能力,在服务器列表上迭代相同的命令循环,而不是只在一个服务器上.

在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}");
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的脚本和我想要根据第一个响应实现的基本概念.

Gre*_*ill 6

是的,这很安全.但是,您可能希望使用除默认值之外的其他循环变量$_.

foreach my $server (@servers) {
   foreach my $command (@commands) {
       # ...
   }
}
Run Code Online (Sandbox Code Playgroud)