#!/usr/bin/perl -w use strict; use Data::Dumper; # The objective of the application is to demonstrate # how to use # Build an array of hashes. my @data2 = ( { "DR"=>[0,0,0,0,0], "SAT ITAMS"=>[0,0,0,0,0], "PROD ITAMS"=>[0,0,0,0,0] } ); # End of the array. my @data=({}); my $work_request = { "DR"=>[0,0,0,0,0], "SAT ITAMS"=>[0,0,0,0,0], "PROD ITAMS"=>[0,0,0,0,0] }; for ( my $indx = 0; $indx <=2; $indx++){ # Make a reference to the hash reference my $work_package = \%{$work_request}; # The hash should be constructed dynamically? foreach my $key (keys %{$work_package}){ my @list = @{$work_package->{$key}}; for (my $a_id=0; $a_id <= $#list; $a_id++) { $list[$a_id]=$indx; print " $list[$a_id]\t"; } print "\n"; } print"\n"; # Add the hash reference to the array #push (@data, %{$work_package}) push (@data, \%{$work_package}); } # Printing out the array of hashes list. # Now is print out the array of hashes. for ( my $indx = 0; $indx <=2; $indx++){ # Make a reference to the hash reference my $work_package = pop(@data); # The hash should be constructed dynamically? foreach my $key (keys %{$work_package}){ #print "$key\t"; my @list = @{$work_package->{$key}}; for (my $a_id=0; $a_id <= $#list; $a_id++) { print " $list[$a_id]\t"; } print "\n"; } print"\n"; } The output I get is the following: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0