Usando File::Find, ¿cómo puedo pasar parámetros a la función que procesa cada archivo?¿Cómo paso parámetros a la subrutina File :: Find que procesa cada archivo?
Tengo un script de Perl que atraviesa directorios para convertir archivos de 3 canales TIFF a archivos JPEG (3 archivos JPEG por archivo TIFF). Esto funciona, pero me gustaría pasar algunos parámetros a la función que procesa cada archivo (excepto el uso de variables globales).
Aquí es la parte relevante de la secuencia de comandos, donde he tratado de pasar el parámetro:
use File::Find;
sub findFiles
{
my $IsDryRun2 = ${$_[0]}{anInIsDryRun2};
}
find ({ wanted => \&findFiles, anInIsDryRun2 => $isDryRun }, $startDir);
$isDryRun
es un escalar. $startDir
es una cadena, ruta completa a un directorio.
$IsDryRun2
no está configurado:
El uso de inicializar valor $ IsDryRun2 en la concatenación o cuerda en línea TIFFconvert.pl 197 (# 1) (W sin inicializar) un valor indefinido se utilizó como (.) si ya se definió . Fue interpretado como "" o "0", pero tal vez fue un error. Para suprimir esta advertencia, asigne un valor definido a sus variables.
(La vieja llamada sin parámetros fue: find (\&findFiles, $startDir);
)
plataforma de prueba (pero la casa de producción será una máquina Linux, Ubuntu 9.1, Perl 5.10, 64 bits): ActiveState Perl 64 bits . Windows XP. Desde perl -v: v5.10.0 creado para MSWin32-x64-multi-thread Binary build 1004 [287188] proporcionado por ActiveState.
Gracias, funcionó. ¿Se requiere el primer punto y coma (tercera línea)? –
No necesita ese punto y coma, pero no está de más tenerlo allí. –
@hobbs => siempre me ha gustado la forma en que Perl maneja el currificado con subs anónimos. ¿Qué sería lindo para ti? –