2013-04-08 57 views
0

如果目錄中的某個文件與某些命名法匹配,則需要對其進行處理。perl:無法打開文件以供閱讀有時

我有下面一段代碼的問題:

if ($fichier =~ /0284\-\d{4}-\w{6}\.0284\.UPDREQ\.\d{4}\.\d{10}/) 
{ 
my $msg = "Processing file is : $fichier \n"; 
Trace($EXP, __FILE__, __LINE__, "$msg"); 
} 
if(!open (FILE, "< $fichier")) 
{ 
my $cmd = "mv $REP_FLOTS/$fichier $REP_UPDREQ_ARCH/err_$fichier"; 
system("$cmd"); 
} 
$lines++ while (<FILE>); 
close FILE; 

它能夠打開和閱讀,有時內容,並在其他時間失敗。 我在這段代碼中遺漏了什麼?因爲它有時工作得很好。

回答

7

爲什麼不問系統本身有什麼問題?可變$!適用於以前的系統調用最後一個錯誤,因此,如果打開失敗,只是打印:

if(!open (FILE, "< $fichier")) 
{ 
warn "unable to open '$fichier' for reading: $!\n"; 
my $cmd = "mv $REP_FLOTS/$fichier $REP_UPDREQ_ARCH/err_$fichier"; 
system("$cmd"); 
} 
+0

使用文件作爲文件處理程序可能造成問題。 當我改變它時,我沒有發現任何問題。 – Anvesh 2013-05-14 15:18:58