#!/usr/bin/env perl # $Id: 1198743.pl,v 1.5 2017/09/06 11:32:17 karl Exp karl $ # http://perlmonks.org/?node_id=1198743 use strict; use warnings; use feature qw(say); use Data::Dump; my @array = ( 'a', 1, 2, 3, 4, 'b', 6, 7, 8 ); my %hash; my @keys = grep { /\D/ } @array; my @values = map { [ split "", $_ ] } split /\D/, join "", @array; shift @values; @hash{@keys} = @values; dd \%hash; __END__ karls-mac-mini:monks karl$ ./1198743.pl { a => [1 .. 4], b => [6, 7, 8] }