私のコンセプトスクリプトの機能を追加して、1つのサーバーではなく、サーバーの一覧に対して同じループのコマンドを反復したいと考えています。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
名前付きキャプチャグループのハッシュ –