use strict; use warnings; use Data::Dump::Streamer; my @colA = ('a01' .. 'a10'); my @colB = qw(red green blue green white gray orange brown purple mauve); my %colHash; push @{$colHash{$colA[$_]}}, $colB[$_] for 0 .. $#colA; my @colC = (1 .. 10); push @{$colHash{$colA[$_]}}, $colC[$_] for 0 .. $#colA; Dump (\%colHash);