in reply to output caught in memory

great.

I had looked at the $| option and had declared it equal to 1 at the beginning of the script, but it didn't do anything (perhaps because I was using select to change the default output before printing?).

What finally worked was adding the $| = 1 between the selects. So, I went from this:

# Change the output to logfile $filehandle = select LOG_FILENAME; eval $menu[$var]; # Restore the filehandle select $filehandle;
to this:
# Change the output to logfile $filehandle = select LOG_FILENAME; $| = 1; eval $menu[$var]; # Restore the filehandle select $filehandle;
Many thanks to all.