#!/usr/bin/perl use strict; use warnings; use feature qw/ say /; use Data::Dumper; $Data::Dumper::Sortkeys = 1; my @records = ( [ 'inbox', 'yes', 'NZ' ], [ 'inbox', 'no', 'UK' ], [ 'outbox', 'yes', 'UK' ] ); my $href; my $index = 0; foreach my $record ( @records ) { ++$index; $href->{ $index }->{ $_ } = shift @{ $record } for qw/ mailbox subscribe country /; } say Dumper $href; __END__