my %h = (); foreach(@_) { $h{something} = $_; # changes the %h above every time push @something, \%h; # puts the %h into @something multiple times... }