use strict; use warnings; use Data::Dumper qw(); use Data::Dump::Streamer qw(); my %switch_param; my $switch_optional; $switch_optional->{foo} = 'bar'; my @optional; for (1 .. 3) { @optional = (@optional, $switch_optional); } $switch_param{"optional"} = [@optional]; Data::Dump::Streamer::Dump \%switch_param; print "\n\n"; print Data::Dumper::Dumper (\%switch_param); #### $HASH1 = { optional => [ { foo => 'bar' }, 'V: $HASH1->{optional}[0]', 'V: $HASH1->{optional}[0]' ] }; $HASH1->{optional}[1] = $HASH1->{optional}[0]; $HASH1->{optional}[2] = $HASH1->{optional}[0]; $VAR1 = { 'optional' => [ { 'foo' => 'bar' }, $VAR1->{'optional'}[0], $VAR1->{'optional'}[0] ] };