使用File :: Find,如何将参数传递给处理每个文件的函数?
我有一个遍历目录的Perl脚本,以便将一些3通道TIFF文件转换为JPEG文件(每个TIFF文件3个JPEG文件).这有效,但我想将一些参数传递给处理每个文件的函数(不使用全局变量).
以下是我尝试传递参数的脚本的相关部分:
use File::Find;
sub findFiles
{
my $IsDryRun2 = ${$_[0]}{anInIsDryRun2};
}
find ( { wanted => \&findFiles, anInIsDryRun2 => $isDryRun }, $startDir);
Run Code Online (Sandbox Code Playgroud)
$isDryRun是一个标量.$startDir是一个字符串,一个目录的完整路径.
$IsDryRun2 未设置:
在连接(.)中使用未初始化的值$ IsDryRun2或在TIFFconvert.pl第197行(#1)使用字符串(未初始化)使用未定义的值,就像它已经定义一样.它被解释为""或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提供.
hob*_*bbs 15
您需要创建一个子引用,使用所需的参数调用您想要的sub:
find(
sub {
findFiles({ anInIsDryRun2 => $isDryRun });
},
$startDir
);
Run Code Online (Sandbox Code Playgroud)
这或多或少是令人讨厌的.这不是很好.:)