use File::Find; my @headers; my %seen; find(sub { push @headers, $_ if -f && /\.h$/ && !$seen{$_}++; }, ".");