File :: Findを使用して、各ファイルを処理する関数にパラメーターを渡すにはどうすればよいですか?
いくつかの3チャンネルTIFFファイルをJPEGファイル(TIFFファイルごとに3つのJPEGファイル)に変換するためにディレクトリをトラバースするPerlスクリプトがあります。これは機能しますが、各ファイルを処理する関数にいくつかのパラメーターを渡したいと思います(グローバル変数を使用する場合を除く)。
これが、パラメーターを渡そうとしたスクリプトの関連部分です。
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ビット):ActiveStatePerl64ビット。WindowsXP。perl -vから:ActiveStateによって提供されるMSWin32-x64-マルチスレッドバイナリビルド1004[287188]用にビルドされたv5.10.0。