Я собираюсь игнорировать все вещи из кода OP, которые кажутся ненужными.
Вместо этого мой ответ концентрируется на единственном фрагменте, который на самом деле, кажется, что-то делает: анонимная функция, переданная find()
.Исходя из этого, я определяю, что OP хочет искать файлы с тем же именем, которое указано в командной строке, начиная с текущего каталога.
#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
my($match) = @ARGV;
die "usage: $0 <file name to match>\n"
unless defined $match;
# file search
find({
wanted => sub {
print "$File::Find::name\n"
if (-f $_) && ($_ eq $match);
},
},
'.'
);
exit 0;
Пример использования:
$ ./R.pl some_file_name_to_find >cel_files.txt
Остается вопрос: ПОЧЕМУ? То же можно сделать в командной строке оболочки с помощью:
$ find . -type f -name some_file_name_to_find >cel_files.txt