2013-04-08 38 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