my %hash; for my $eye ( 0 .. 2 ){ my @file_lines = map { "$eye$_" } 'a'..'c'; $hash{$eye} = \@file_lines; } use Data::Dumper; print Dumper( \%hash ); __END__ $VAR1 = { '1' => [ '1a', '1b', '1c' ], '0' => [ '0a', '0b', '0c' ], '2' => [ '2a', '2b', '2c' ] };