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

Смежные вопросы