Используя File :: Find , как я могу передать параметры в функцию, которая обрабатывает каждый файл?
У меня есть Perl-скрипт, который пересекает каталоги, чтобы преобразовать некоторые 3-канальные TIFF файлы в файлы JPEG (3 файла JPEG на файл TIFF). Это работает, но я хотел бы передать некоторые параметры функции, которая обрабатывает каждый файл (за исключением использования глобальных переменных).
Вот соответствующая часть скрипта, где я попытался передать параметр:
use File::Find;
sub findFiles
{
my $IsDryRun2 = ${$_[0]}{anInIsDryRun2};
}
find ( { wanted => \&findFiles, anInIsDryRun2 => $isDryRun }, $startDir);
$isDryRun
- скаляр. $startDir
- это строка, полный путь к каталогу.
$IsDryRun2
не установлено:
Использование неинициализированного значения $ IsDryRun2 в конкатенации (.) Или в строке в
TIFFconvert.pl line 197 (# 1)
(W не инициализирован) Неопределенное значение использовалось так, как если бы оно уже было
определены. Это интерпретировалось как "" или 0, но, возможно, это было ошибкой.
Для подавления этого предупреждения назначьте определенное значение вашим переменным.
(старый вызов без параметров был: find ( \&findFiles, $startDir);
)
Тестовая платформа (но домашним продуктом будет Linux-машина, Ubuntu 9.1, Perl 5.10, 64 бит): ActiveState Perl 64 бит. Windows XP. От perl -v: v5.10.0, собранный для многопоточной MSWin32-x64-бинарной сборки 1004 [287188], предоставленной ActiveState .