Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Perl packages to convert hash refs to array refs and vice-versa?

by jesuashok (Curate)
on Oct 31, 2005 at 09:16 UTC ( [id://504196]=perlquestion: print w/replies, xml ) Need Help??

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

Hi Monks,

Is there any perl module's available to convert :-

Hash reference into Array reference

Array reference into Hash Reference

"Keep pouring your ideas"

2005-10-31 Retitled by broquaint, as per Monastery guidelines
Original title: 'perl package's'

  • Comment on Perl packages to convert hash refs to array refs and vice-versa?

Replies are listed 'Best First'.
Re: Perl packages to convert hash refs to array refs and vice-versa?
by tirwhan (Abbot) on Oct 31, 2005 at 09:39 UTC

    No module necessary, you can do

    $array_ref=[%$hash_ref];
    and
    $hash_ref = {@$array_ref};

    However, you want to be careful when doing that, for example when turning a hash into an array this way the array values end up in an unpredictable order(they'll always be key,value,key,value..., but the order of the keys will be unpredictable). When going the other way, your hash keys (i.e. the first,third,fifth... array element) need to be unique or you lose data. Without knowing what it is you're trying to achieve it's hard to give advice, so perhaps you should give a bit more detail on your goal with this?


    Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -- Brian W. Kernighan
Re: Perl packages to convert hash refs to array refs and vice-versa?
by dorward (Curate) on Oct 31, 2005 at 09:37 UTC

    Using a module for that strikes me as overkill...

    #!/usr/bin/perl use strict; use warnings; use Data::Dumper; # Create an array reference to demo this my $foo_ref = ['a', 'b', 'c', 'd']; # Convert array ref into hash ref and display my $bar_ref = {@{$foo_ref}}; print Dumper $bar_ref; # Convert hash ref into array ref and display my $new_foo_ref = [%{$bar_ref}]; print Dumper $new_foo_ref;

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (4)
As of 2024-04-25 08:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found