Используя File:: Find, как передать параметры функции, обрабатывающей каждый файл?
У меня есть Perl script, который перемещает каталоги, чтобы конвертировать некоторые 3-канальные файлы TIFF в файлы JPEG (3 файла JPEG в TIFF файл). Это работает, но я хотел бы передать некоторые параметры функции, обрабатывающей каждый файл (не используя глобальные переменные).
Вот соответствующая часть script, где я попытался передать параметр:
use File::Find;
sub findFiles
{
my $IsDryRun2 = ${$_[0]}{anInIsDryRun2};
}
find ( { wanted => \&findFiles, anInIsDryRun2 => $isDryRun }, $startDir);
$isDryRun
является скаляром. $startDir
- это строка, полный путь к каталогу.
$IsDryRun2
не установлен:
Использование неинициализированного значения $IsDryRun2 в конкатенации (.) или строке в TIFFconvert.pl строка 197 (# 1) (W uninitialized) Значение undefined использовалось так, как если бы оно уже было определены. Это было интерпретировано как "" или 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.