I write a lot of demonstration pieces, and there's always a need for a balance.
Spike solutions / proof of principle and concept work well in front of a class. But then they are subject to major criticism due to a lack of robustness, and for security reasons, if they are published without comment (or even if published WITH comment, as many people seem to ignore comments!)
Fully "salemanproofed" (if you're in sales support) or "Squaddieproofed" (if you're doing military systems) examples are great - except that they contain so much extra testing and checking that you can't see the wood for the trees when explaining them to a newcomer programmer.
Catch 22? To some extent yes, but at times I try to steer the happy medium and it works. For example, I wrote a Perl example in front of the class yesterday ... checking files, opening, reading, writing them in Perl ... it shows many mechanisms and whilst it's not "A Rembrandt" it's a reasonable job.
And I have added comments and POD (Plain Ole Documentation) so that it's useful for other too. See here
(Separate window will open).
A couple of extra comments - yes, I KNOW that
• I should not hard code the file names and paths
• The error messages should be improved
• There should be a check on command line params / a usage line
• Maybe I should use the 3 parameter form of open
• And that you could come up with other issues too.
But it makes a great example to teach the principles! (written 2007-10-30, updated 2007-10-31)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articlesP207 - Perl - File Handling 
How many people in a room? - (2004-08-12) 
Relative or absolute milkman - (2004-11-10) 
STDIN, STDOUT, STDERR and DATA - Perl file handles - (2005-03-23) 
printf - a flawed but useful function - (2006-02-22) 
Perl - its up to YOU to check your file opened - (2006-02-23) 
Iterators - expressions tha change each time you call them - (2006-04-27) 
Being sure to be positive in Perl - (2006-09-15) 
Some one line Perl tips and techniques - (2007-08-21) 
Reading a file multiple times - file pointers - (2007-11-23) 
stdout v stderr (Tcl, Perl, Shell) - (2007-12-10) 
There is more that one way - Perl - (2008-07-14) 
Formatting with a leading + / Lua and Perl - (2008-10-15) 
Seven new intermediate Perl examples - (2008-10-30) 
Reactive (dynamic) formatting in Perl - (2008-10-31) 
Transforming data in Perl using lists of lists and hashes of hashes - (2009-06-12) 
But I am reading from a file - no need to prompt (Perl) - (2009-09-14) 
File open and read in Perl - modernisation - (2010-06-19) 
Chancellor George Osborne inspires Perl Program - (2010-06-22) 
Fresh Perl Teaching Examples - part 2 of 3 - (2010-06-27) 
Finding your big files in Perl - design considerations beyond the course environment - (2011-06-14) 
Dark mornings, dog update, and Python and Lua courses before Christmas - (2011-12-10) 
Traversing a directory in Perl - (2012-08-08) 
Spraying data from one incoming to series of outgoing files in Perl - (2012-08-15)
Some other Articles
The Learning Perl crew, October 2007National Speaker - now to get the talk readyA Golf Club Decision - Perl to JavaWhat software version do we teach?Good, steady, simple example - Perl file handlingBetter technology makes for longer commutes?What we teach - expained for the non-technicalThe little gestures that can really countSparse and Greedy matching - Tcl 8.4Buffering of inputs to expect, and match order