Чтобы найти определенный файл, просто откройте файл или запустите проверку файла:
my $file = "/home/sait11/Desktop/test/Test cases/$xml_file_name";
print "$file found\n" if -f $file;
Запуск вашего кода, это, кажется, работает. Если вы вводите шаблон, то он правильно выбирает имена файлов из целевого каталога, которые соответствуют тому, что вы вводите в Perl регулярное выражение. Какое имя вы искали?
Если вы измените grep
на:
my @dirs_found = grep { /^$xml_file_name$/ } readdir DIR;
тогда он исключит значения, в которых регулярное выражение не соответствует полному имени. С другой стороны, вы отказываетесь от некоторой гибкости, когда делаете это.