use strict; use warnings; use Data::Dump::Streamer; my @questions; my %pending; for (qw(first second)) { $pending{answer} = $_; push @questions, %pending; } Dump \@questions; #### $ARRAY1 = [ 'answer', 'first', 'answer', 'second' ]; #### my @questions; for (qw(first second)) { my %pending; $pending{answer} = $_; push @questions, \%pending; } Dump \@questions; #### $ARRAY1 = [ { answer => 'first' }, { answer => 'second' } ];