while(<>) { /(.*)/; $names{$1} = 1; } use File::Find (); File::Find::find sub { $names{$_} and -x and print $File::Find::name, "\n"; }, grep -e, split ":", $ENV{"PATH"};