The [File::Globstar](https://metacpan.org/pod/File::Globstar] module does this sort of thing. The **
can cross directories:
use File::Globstar qw(globstar);
my @files = globstar '/abc/def/**/myfile.txt';
But, I might be tempted to check the performance against letting the shell do it for me:
my @files = `ls /abc/def/**/myfile.txt`;