David Wright <deb...@lionunicorn.co.uk> writes: > An efficient way of doing this is to trap a signal, like USR1, > in your program, and react by either your close/open-append or > just flushing the buffers. That way, the program will run > normally most of the time, without wasting all that time > opening/closing files. > > If there's not too much output compared with the computation necessary > to generate it, just setting line-buffering on the output stream > can be sufficient. > > I've read that when the program is already running, some languages > (like Python, so probably Perl too) offer a debugger that can > allow you to flush the buffers from "within", but I've not tried > it. > > Cheers, > David.
Before reading this posting, I added code in my perl script to open, append and close the file but the suggestion to add a signal handler is a much better idea so thanks for the suggestion. Opening, appending and closing for each new line of output made me a bit squeamish. The program is monitoring a stream of data from a radio scanner. The data spew in at about 20 or 30 lines per second. When nothing is happening, there are 3 possible strings that indicate nothing is happening right now. When something changes, the strings stop matching 3 comparison strings i put in which match each of the 3 "nothing is happening right now" strings and the different strings get printed to the screen and to the disk. In reality, these strings don't exactly mean that nothing is happening but that the same non events are happening. When things change and there is output of interest, that output also spews in at 20 or 30 lines per second so I need to do as little as possible to handle that so the system doesn't get swamped. The signal handler is most likely far more efficient a method to capture the data of interest as it will essentially not have to make any decisions until time to shut down the program and look at the data. Even with the open, append and close routine, the strings it is capturing appear to be good but it could be capturing for minutes on end at times and it needs to just be able to run like the wind and store lines as quickly as it can. Thank you. Martin McCormick amateur radio WB5AGZ