使用File::Find,如何将参数传递给处理每个文件的函数?
我有一个遍历目录的 Perl 脚本,以便将一些 3 通道TIFF文件转换为 JPEG 文件(每个 TIFF 文件 3 个 JPEG 文件)。这可行,但我想将一些参数传递给处理每个文件的函数(缺少使用全局变量)。
这是我尝试传递参数的脚本的相关部分:
use File::Find;
sub findFiles
{
my $IsDryRun2 = ${$_[0]}{anInIsDryRun2};
}
find ( { wanted => \&findFiles, anInIsDryRun2 => $isDryRun }, $startDir);
$isDryRun
是一个标量。$startDir
是一个字符串,一个目录的完整路径。
$IsDryRun2
未设置:
在串联 (.) 或 TIFFconvert.pl 第 197 行 (#1) 的字符串中使用未初始化的值 $IsDryRun2 (W 未初始化) 使用未定义的值,就像它已经定义一样。它被解释为“”或 0,但可能是一个错误。要抑制此警告,请为您的变量分配一个定义的值。
(没有参数的旧调用是find ( \&findFiles, $startDir);
:)
测试平台(但生产家庭将是 Linux 机器,Ubuntu 9.1,Perl 5.10,64 位):ActiveState Perl 64 位。视窗XP。来自 perl -v: v5.10.0 built for MSWin32-x64-multi-thread Binary build 1004 [287188] 由 ActiveState 提供。