push (@{%newhash->{$rows[0]}}, @newrows); push (@{%newhash->{$rows[0]}}, @newrows); #### push @{$newhash{IP}}, @newrows); push @{$newhash{IP}}, @newrows); #### push @{$newhash{IP}}, [@newrows]); push @{$newhash{IP}}, [@newrows]); #### $VAR1 = { 'IP' => [ [ 'value1', 'value2' ], [ 'value1', 'value2' ] ] }; #### @printrows = $newhash{$key}; # wrong -> the hash will contain a reference to an array @printrows = @{$newhash{$key}}; # right -> de-reference the array first