dgrep internals 

use Pod::Usage;
use Getopt::Long qw(GetOptions);
use File::Find;
use File::Basename;
use File::Slurp;
use Cwd;
write_file($xargs-tmp-file, $files);

my @commands = qw(
    xargs
    -a
    xargs-tmp-file
    grep
);

push(@commands, @ARGV);

system(@commands);

unlink $xargs-tmp-file;