in reply to Appropriate amount of abstraction

I assume most of us taught ourselves perl, rather than taking some classes, at least in the beginning. I'd say we can only afford the abstraction that can get the current job done as quickly as possible. CGI.pm is a great example that a novice can start using in the first day. But a good programmer will never stop at the initial level of abstraction: he/she will always go lower, and higher. Both directions provide much better understanding of the module at hand. So teach them whatever that can get the job done now, and give them time to figure out the rest.