Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

append values to a same key in hash

by shan_emails (Beadle)
on Jul 06, 2009 at 09:18 UTC ( [id://777494]=perlquestion: print w/replies, xml ) Need Help??

shan_emails has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks,

Is there any option to append the values of the same key in a hash.

eg.
%h =( aid=>'6077', 6077.1=>{pii=>"aaaa", pit=>"bbbb", doi=>"cccc", }, abc=>'asdf', ); #I need to append values as follows $h{6077.1} = { pii=>"aaaa", pit=>"bbbb", doi=>"cccc", xmltype=>'000', weight=>'111', }

Regards,
Shanmugam A.

Replies are listed 'Best First'.
Re: append values to a same key in hash
by targetsmart (Curate) on Jul 06, 2009 at 09:24 UTC
    $h{6077.1}{'xmltype'} = '000'; $h{6077.1}{'weight'} = '111';
    will do it.
    see perldsc


    Vivek
    -- 'I' am not the body, 'I' am the 'soul', which has no beginning or no end, no attachment or no aversion, nothing to attain or lose.
Re: append values to a same key in hash
by jethro (Monsignor) on Jul 06, 2009 at 09:26 UTC
    $h{6077.1}->{xmltype}= '000';

    You don't really append to a hash (since there is no ordered row or queue where you can append behind) but just insert values. To answer your probable next question too, if you want to test if a value already exists in the hash, you can use the function exists()

    if (exists($h{6077.1}->{xmltype}) { ... }

    UPDATE: changed two ] to }, stupid typing error found thanks to AnomalousMonk

      Just be aware that exists($h{a}->{b}) will autovivify the first hash key component ({a}):

      use strict; use warnings; my %h; unless (exists($h{foo}{bar})) { print "\$h{foo}{bar} exists: no\n"; print "\$h{foo} exists: ", exists($h{foo})?'yes':'no', "\n"; } #outputs # $h{foo}{bar} exists: no # $h{foo} exists: yes

      If you want to be extra careful not to create hash keys, you'll have to use if (exists($h{a} and exists($h{a}->{b}) instead. and (or &&) short circuits so you'll never reach the second test if the first part of the key is non-existent.

      Best, beth

      @shan emails,
      you can use hash of hash data structure.
      Thank you,

      it works fine.

      Thanks for your response.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://777494]
Approved by targetsmart
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (4)
As of 2026-01-16 15:32 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    What's your view on AI coding assistants?





    Results (119 votes). Check out past polls.

    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.