use File::Find::Rule; my @search = qw( /usr/local/ ); my @abs_dirs = qw ( /usr/local/share/locale ); my %abs_dirs; @abs_dirs{@abs_dirs} = (); my @dirs = grep { ! exists $abs_dirs{$_} } File::Find::Rule->directory()->in( @search );