The Seven Steps to Perl Mastery by Tom Christiansen

(Reposted - originally by Tom Christiansen, preserved by Ilya Chelpanov at, reposted here for convenience and posterity.)

The Seven Steps to Perl Mastery
by Tom Christiansen.

A Perl Novice ...
- Thinks CGI and Perl are interchangeable terms.
- Still thinks Perl looks like bad C code viewed over a noisy modem.
- Is insecure about the concept of dollar signs and at signs.
- Thinks Perl should be more like sh or tcl.
- Has heard of the `` Unix mindset '', but hopes it's a treatable condition.
- Can not figure out how to read input from the keyboard.
- Thinks regular expressions are somebody cursing.
- Wonders why no one can give him a straight answer about whether Perl is
compiled or interpreted.

A Perl Initiate ...
- Has begun to learn about $ _
- And does not like it one bit.
- Thinks the -w flag is a waste of time.
- Thinks Perl should be more like C ++ or Java.
- Is still trying to figure why Perl has two different kinds of arrays.
- Knows how to use perlbug, but sends in bogus bug reports.
- Has been bitten by implicit context conversions, but has not caught on yet
to how triggered it.
- Can not keep == separate from eq, and still thinks that + should
concatenate strings.

A Perl User ...
- Thinks Perl is just for text processing.
- Uses the Perl debugger.
- Has used other people's modules.
- Wonders what an object is.
- Knows their way around CPAN.
- Knows the difference between local and my.
- Uses .
- Is still trying to figure what references are for.
- Thinks Perl should be more like scheme or eiffel.
- Submits real bug reports with perlbug.

A Perl Adept ...
- Write JAPHs to impress their friends and annoy their coworkers.
- Begins all programs with use strict.
- Thinks Perl should just be Perl.
- Has taken enough advantage of cryptocontext to annoy others.
- Knows how to create records and objects with hash refs.
- Uses syscall to get at undocumented operating system calls.
- Curses the flexibility of the Perl object system.
- Uses / e in substitutes.
- Has begun to wonder what typeglobs are for.
- Has written their own modules in Perl.
- Begins to look at all data in terms of regular expressions.
- Understands why regexes can not match nested data.
- Rewrites minor utilities in Perl.

A Perl Hacker ...
- Writes games in Perl.
- Has written extension modules in C.
- Uses AUTOLOAD and closures in curious ways.
- Appreciates the aesthetics of the Schwartzian Transform.
- Delights in the flexibility of the Perl object system.
- Has written their own pod2XXX translator.
- Understands the output from Perl -Dflags.
- Accesses the Perl symbol table directly.
- Submits bug reports with working patches.
- Edits files using a special Perl-embedded version of vi or emacs.
- Has contributed modules, manpages, and tools to the standard Perl

A Perl Guru ...
- Can answer any Perl question instantly.
- Can write anything in Perl
- And does.
- Takes advantage of undocumented language features.
- Writes code that gives even Larry pause.
- Implements opaque objects and compiled regexes using closures.
- Can read and understand the output of the perl-to-C compiler.
- Embeds Perl interpreters in larger applications.
- Has written their own -d: debugger module.
- Used object-oriented programming before it existed.
- Is debating taking their turn with the patch pumpkin.

A Perl Wizard ...
- Is on a first-name basis with Larry's wife.
- Has written or rewritten major subsystems of the Perl compiler or
- Is thinking about rewriting the regex engine, the memory allocator, or
the garbage collector.
- Does not write games in Perl because they realize that Perl * is * the game.

(If anyone wonders, I'm somewhere between Perl Adept, Hacker, and Guru - but I did contribute one of the versions of the key-hash algorithm to Perl CORE lo these many years ago.)

Leave a comment

About Mark Leighton Fisher

user-pic Perl/CPAN user since 1992.