Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert array of arrays to array of hash

Tags:

arrays

hash

perl

I have following array of arrays in Perl that are getting as multiple rows in database.

$arrayref = [
    [ 1, "name1",  "name2" ],
    [ 2, "name3",  undef ],
    [ 3, "name5",  "name6" ],
    [ 4, "name10", undef ],
];

I want to make this as an array of hashes like this

my @array = (
    { id => 1, name => "name1",  l_name => "name2" },
    { id => 2, name => "name3",  l_name => undef },
    { id => 3, name => "name5",  l_name => "name6" },
    { id => 4, name => "name10", l_name => undef },
);
like image 335
Futuregeek Avatar asked Dec 03 '25 18:12

Futuregeek


1 Answers

You can use map {} to transform array references to hash references,

my @cols = qw(id name l_name);

my @array = map { my %h; @h{@cols} = @$_; \%h } @$arrayref;

or

use List::MoreUtils qw( zip );

my @cols = qw(id name l_name);

my @array = zip(\@cols, @$arrayref);
like image 160
mpapec Avatar answered Dec 06 '25 08:12

mpapec



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!