use File::Finder; my @search = qw( /usr/local/ ); my @abs_dirs = qw ( /usr/local/share/locale ); my %abs_dirs; @abs_dirs{@abs_dirs} = (); my @dirs = File::Finder->type('d')->eval(sub { not exists $abs_dirs{$File::Find::name}})->in(@search);