unless you have a real performance issue at hand or you're constrained otherwise; it's usually better to print to STDOUT in file processing scripts. This allows you to easily re-direct output to alternate files and to chain commands together with pipes for further processing. It's also a good idea to print debug output to STDERR in such scripts, so you can still chain scripts together without sending debug junk from one script to another. You can re-direct STDERR on the command line when running the script to another file etc.
the hardest line to type correctly is: stty erase ^H