0

如果目录中的文件与某些命名法匹配,则将对其进行处理。

我对以下代码有疑问:

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;

它有时能够打开和阅读内容,有时会失败。我在这段代码中缺少什么?因为它有时工作得很好。

4

1 回答 1

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");
}
于 2013-04-08T11:27:59.980 回答