open (DISFILE,"<".$datfile) or die "Can't do it"; &lock_files(DISFILE); ---PERFORM CALCULATIONS OR WHATEVER-- &Unlock(DISFILE); close DISFILE; sub lock_files{ my $timeout = 0; my $SomeFile = shift; until(flock($SomeFile,2)){ sleep .20; if(++$timeout > 50){ print "Server Time out Message"; }#end if }#end until }#end sub lock files sub Unlock{ my $SomeFile = shift; flock($SomeFile,8); }#end unlock