http://qs1969.pair.com?node_id=504196

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;