Don't use bareword filehandles. [Filehandles ]
Use indirect filehandles. [Indirect Filehandles ]
If you have to use a package filehandle, localize it first. [Localizing Filehandles ]
Use either the IO::File module or the three-argument form of open. [Opening Cleanly ]
Never open, close, or print to a file without checking the outcome. [Error Checking ]
Close filehandles explicitly, and as soon as possible. [Cleanup ]
Use while (<>), not for (<>). [Input Loops ]
Prefer line-based I/O to slurping. [Line-Based Input ]
Slurp a filehandle with a do block for purity. [Simple Slurping ]
Slurp a stream with Perl6::Slurp for power and simplicity. [Power Slurping ]
Avoid using *STDIN, unless you really mean it. [Standard Input ]
Always put filehandles in braces within any print statement. [Printing to Filehandles ]
Always prompt for interactive input. [Simple Prompting ]
Don't reinvent the standard test for interactivity. [Interactivity ]
Use the IO::Prompt module for prompting. [Power Prompting ]
Always convey the progress of long non-interactive operations within interactive applications. [Progress Indicators ]
Consider using the Smart::Comments module to automate your progress indicators. [Automatic Progress Indicators ]
Avoid a raw select when setting autoflushes. [Autoflushing ]