in reply to Looping through an array of hashes

Assuming the hash keys are always the same (and known in advance), here is one straightforward way:

use strict; use warnings; my $people = [ { 'firstname' => ' InReach', 'companyid' => 1042, 'type' => 'client', 'lastname' => 'IT Solutions', 'id' => 1498, 'companyname' => 'InReach IT Solutions' }, { 'firstname' => ' Neil', 'companyid' => 1589, 'type' => 'client', 'lastname' => 'Ssmith', 'id' => 3132, 'companyname' => 'White Staffing Management' }, { 'firstname' => 'Zeeshan', 'companyid' => 1867, 'type' => 'client', 'lastname' => 'Jones', 'id' => 4174, 'companyname' => 'Staff247' } ]; my @keys = qw( firstname companyid type lastname id companyname ); for my $hash (@$people) { print "\n"; for my $key (@keys) { printf "%11s: %s\n", $key, $hash->{$key}; } }

Output:

23:55 >perl 1902_SoPW.pl firstname: InReach companyid: 1042 type: client lastname: IT Solutions id: 1498 companyname: InReach IT Solutions firstname: Neil companyid: 1589 type: client lastname: Ssmith id: 3132 companyname: White Staffing Management firstname: Zeeshan companyid: 1867 type: client lastname: Jones id: 4174 companyname: Staff247 23:55 >

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Replies are listed 'Best First'.
Re^2: Looping through an array of hashes
by Lotus1 (Vicar) on Jul 02, 2018 at 15:01 UTC

    A slight change lets me get all keys for any array of hashes. I added the sort just for fun.

    use strict; use warnings; my $people = [ { 'firstname' => ' InReach', 'companyid' => 1042, 'type' => 'client', 'lastname' => 'IT Solutions', 'id' => 1498, 'companyname' => 'InReach IT Solutions' }, { 'firstname' => ' Neil', 'companyid' => 1589, 'type' => 'client', 'lastname' => 'Ssmith', 'id' => 3132, 'companyname' => 'White Staffing Management' }, { 'firstname' => 'Zeeshan', 'companyid' => 1867, 'type' => 'client', 'lastname' => 'Jones', 'id' => 4174, 'companyname' => 'Staff247' }, { 'firstname' => 'Alex', 'companyid' => 1867, 'type' => 'client', 'lastname' => 'Jones', 'id' => 4175, 'companyname' => 'Staff248' }, ]; foreach my $hash (@$people){ print_hash ($hash); } print '*'x79, "\n"; #sort by lastname then firstname foreach my $hash (sort { $a->{lastname} cmp $b->{lastname} or $a->{fir +stname} cmp $b->{firstname} } @$people) { print_hash ($hash); } sub print_hash { my $hr = shift; print "\n"; foreach my $key (keys %$hr){ printf "%11s: %s\n", $key, $hr->{$key}; } }