You can wipe out both if
conditions with,
my ($file_name, $file_ext) = $file =~ /^(\w+)\.(in|out)$/ or next;
or letting module do the file parsing,
use File::Basename;
# ..
my ($file_name,undef,$file_ext) = fileparse($file, "in", "out");
next if !$file_ext;