Want to build great command-line utilities? This talk focuses on the UNIX philosophy of building good command-line tools that are composeable, reusable, scriptable, and do what the user expects.
This talk will go over the differences between the default filehandles (STDIN, STDOUT, STDERR), how options and arguments should behave, and how to use the surrounding shell environment to your tool's advantage (including all the code you don't have to write because of the shell's tools).
Perl is used for examples, but this talk is about UNIX and GNU conventions and best practices for command-line programs.