#!/usr/local/bin/perl use strict; use warnings; my %hash; my @array_keys; my @keys = qw(xx yy zz); @hash{@keys}=([{'key1'=>1}],[{'key2'=>2}],[{'key3'=>3}]); #hash slice @array_keys = keys %hash; print "@array_keys\n"; push @{$hash{'aa'}},{'key4'=>4}; #add another key @array_keys = keys %hash; #update the array print "@array_keys\n"; #### for (@array_keys){ for my $element ($hash{$_}){ my @val; for my $element1 ($element->[0]){ @val = values %$element1; } print "@val\n"; } } #OR @array_values = values %hash; for (@array_values){ for my $element ($_){ my @val; for my $element1 ($element->[0]){ @val = values %$element1; } print "@val\n"; } } #### use strict; use warnings; use Data::Dumper; my %hash; my @array_values; my @keys = qw(xx yy zz); @hash{@keys}=([{'key1'=>'ipconfig'}],[{'key2'=>'dir'}]); @array_values = values %hash; my %hash_output; for (@array_values){ for my $element ($_){ for my $element1 ($element->[0]){ for my $result (values %$element1){ my $outcome = `$result`; push @{$hash_output{command}[0]}, $outcome; } } } } print Dumper(\%hash_output); ####