use strict; use warnings; use Data::Dumper; use FindBin qw($Bin); my @dirs = grep -d, ('foo','bar','.',$Bin,'c:/temp'); # valide directories my $hr = { map{ ("here", "$_") } @dirs }; my $ar = [ map{ ("here", "$_") } @dirs ]; print Dumper $hr, $ar;