Я использую Perl для анализа своих данных исследований (несколько больших файлов, которые могут редактировать или изменять пользователи во время работы программы).
В моей программе есть сценарии, позволяющие проверить, завершен ли файл, или нет, прежде чем анализировать данные в одном из файлов. Эта проверка обрабатывается в несколько циклов. Если я просто использую «выход», это только выйти из цикла. Как заставить скрипты завершить работу и сгенерировать сообщение об ошибке для пользователя до его выхода? В моей программе есть определенная переменная, которая выводится в файл журнала в конце программы. Я НЕ хочу использовать команду GOTO. Любая дополнительная информация высоко ценится.
......
foreach $dir (@dirs)
{
...
$file="$dir$filename";
$file_size=`wc -l $file`;
$line=`grep -n TIMESTEP $file`;
#read the first line no of each frame in a data file
@values=split(/\r?\n/,$line);
$loop_i=0;
$tmp=0; #save line no for the first frame
foreach $sub_line (@values)
{
@sub_values=split(/:/,$sub_line);
$line_no[$loop_i]=$sub_values[0];
#check the line number in each frame same or not, if not quit
if($loop_i==1){$tmp=$line_no[$loop_i]-$line_no[$loop_i-1];}
elsif($loop_i>1)
{ $_=$line_no[$loop_i]-$line_no[$loop_i-1];
if($_ <> $tmp)
{$flag=0; $err_message="$err_message; incomplete data (each frame has different line number)";
exit; #cannot quit the whole program
}
}
else{;}
$loop_i++;
}#end foreach $sub_line (@values)
.....
}#end foreach $dir (@dirs)
....