You said, ...push multiple key-value pairs onto an existing hash. Just to clarify, values (scalars) are pushed onto an array; you don't push onto a hash.
The push in your while loop adds array references as values associated with keys, so you see a mix of data from the Dumper output (your push @{$gene{$key}}, $value; notation says treat the key's associated value as an array and push the contents of $value onto that array):
$VAR1 = {
'HES4' => '57801',
'TMEM52' => [
'339456'
],
'SSU72' => [
'29101'
],
'GNB1' => [
'2782'
],
'PLEKHN1' => '84069',
'NCRNA00115' => '79854',
'ATAD3A' => [
'55210'
],
'ATAD3B' => [
'83858'
],
'SLC35E2' => [
'9906'
],
'SAMD11' => '148398',
'NOC2L' => '26155'
};
The [ ] notation indicates a list--each one having been generated by the push--so your hash now contains array references and non-reference values.
choroba has shown you how to add the key-value pairs to an existing hash (which will overwrite an existing value, if the key already exsits):
while(<DATA>){
chomp;
my ($key, $value) = split;
$gene{$key} = $value; # choroba's suggestion
}
Dumper output:
$VAR1 = {
'HES4' => '57801',
'TMEM52' => '339456',
'SSU72' => '29101',
'GNB1' => '2782',
'PLEKHN1' => '84069',
'NCRNA00115' => '79854',
'ATAD3A' => '55210',
'ATAD3B' => '83858',
'SLC35E2' => '9906',
'SAMD11' => '148398',
'NOC2L' => '26155'
};
Is this what you wanted to achieve?
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.