in reply to What 'should' a professional PERL programmer know?

Hello perloHolic(),

I am really looking for specifics such as a minimum amount of required knowledge in certain areas...

We may take it for granted that to be a professional Perl programmer you must, first and foremost, possess the attributes required of any professional programmer: an ability to identify, refine, and clarify a software specification; a basic grounding in data structures and algorithms; deductive/debugging skills; a capacity for self-directed learning; and an appreciation for that elusive quality we call “elegance.”

To be a professional Perl programmer, you should, of course, add fluency in Perl to your general skill set. This means being able to implement programming solutions in Perl, but that by itself is not enough. As Ed Post famously said, “The determined Real Programmer can write FORTRAN programs in any language.”1 When I first learned Perl, I wrote “Perl” scripts that were really C scripts in disguise. And that, by the way, is one of Perl’s great strengths: its TIMTOWTDI philosophy encourages learners to program in ways that are already familiar to them. In this way the learner finds he can be productive in Perl while still absorbing the more Perlish idioms. But a professional Perl programmer should be fully-conversant with Perl’s strengths, and should demonstrate this by writing elegantly “Perlish” programs. At a minimum, I would expect a professional Perl programmer to demonstrate these Perl-specific skills:

  1. use of statement modifiers together with the $_ variable to write concise code
  2. facility with map, grep, split, substr, and splice
  3. understanding of context
  4. facility with regular expressions
  5. dereferencing, construction of complex data structures, and understanding of autovivification
  6. use of hashes to perform common list-related tasks2
  7. facility with core pragmas and modules: autodie, Benchmark, bignum, Data::Dumper, Test::More, etc., etc.
  8. familiarity with sources of online reference: perldoc, CPAN, MetaCPAN (and of course bonus points for using the Monastery’s Super Search!)


Job interviews aren’t always what they’re cracked up to be. At a company where I worked, management interviewed, then hired, a programmer who described himself as one of the top half-dozen C++ programmers in the world. He was later observed reading C++ for Dummies, and when he was eventually fired (surprise!), it was found that none of the code he had written even compiled.

At that same company, an Irish backpacker applied for a casual job as a junior programmer. She was given a C programming test — and she got every question wrong. But she was young and attractive, and the interviewer was a red-blooded Aussie bloke, so she got the job anyway. And proved to be an effective programmer and an asset to the company.

Go figure.

Anyway, hope some of that helps,

1 “Real Programmers Don’t Use Pascal” (1982. See wikiquote#Fortran.)
2 See e.g. “How can I remove duplicate elements from a list or array?” and “How can I tell whether a certain element is contained in a list or array?” in perlfaq4.

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,