Seven Levels of Perl Mastery
Previous
or Next
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.
- Thinks Perl should be more like sh or tcl.
- Has heard of the `Unix mindset', but hopes it's a treatable
condition.
- Can't 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.
Initiate
- Has begun to learn about $_ - and doesn't like it a bit.
- Thinks -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 hasn't
caught on yet.
- Can't keep == separate from eq, and thinks that + should
concatenate strings.
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 <DATA>.
- Is still trying to figure what references are for.
- Thinks Perl should be more like scheme or eiffel.
- Submits real bug reports with perlbug.
Expert
- 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't match nested data.
- Rewrites minor utilities in Perl.
Hacker
- Writes games in Perl.
- Has written extension modules in C.
- Uses AUTOLOAD and closures in curious ways.
- Appreciates the aethetics 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 distribution.
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 (again?) with the patch
pumpkin.
Wizard
- Is on a first-name basis with Larry's wife.
- Has written or rewritten major areas in the Perl compiler or
interpreter.
- Is thinking about rewriting the regex engine, the memory
allocator, or the garbage collector.
- Doesn't write games in Perl, because they realize that Perl
itself is the game.