What I've done that covers many of my use cases, is:
- Watch & wait for the first type of file to appear.
- Sleep for a few seconds to a few minutes depending on the task
- Proceed to verify the other matching files exist, and carry on with the task, else loop back to 1
Sometimes the verification is a check to see if the file has grown larger; if so, then it goes back to sleep repeatedly until the download/copy is finished.
For checking the names, you may want to use a regex to capture the relevant part of the filename, and then look for specifically named files using that.
For example,
if ($file =~ /alphat_(.*)\.zip)
{
my $key = $1; # whatever was between alphat_ and the .zip bits.
if (-f "numerict_${key}.zip && -f "updatet_${key}.zip")
{
print "Caught 'em all!\n";
}
}