使用File::Find,我如何將參數傳遞給處理每個文件的函數?如何將參數傳遞給處理每個文件的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
未設置:(。)在串聯或串
使用未初始化值$ IsDryRun2的 TIFFconvert.pl線197 (W未初始化)一個未定義的值作爲(#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-multi-thread構建的二進制版本1004 [287188]由ActiveState提供。
謝謝,它的工作。是否需要第一個分號(第三行)? – 2010-01-13 13:05:39
你不需要那個分號,但它不會傷害到它。 – 2010-01-13 14:06:59
@hobbs =>我一直很喜歡Perl處理與匿名字符串的方式。你會喜歡什麼? – 2010-01-16 02:42:55