Did you write the documentation? Check.

Did you document all of the public methods? Check.

Is your documentation readable? Hmm...

Ideally, we'd like Perl::Critic to tell you when your documentation is inadequate. That's hard to code, though. So, inspired by the Test::Spelling manpage, this module checks the spelling of your POD. It does this by pulling the prose out of the code and passing it to an external spell checker. It skips over words you flagged to ignore. If the spell checker returns any misspelled words, this policy emits a violation.

If anything else goes wrong -- you don't have Pod::Spell installed or we can't locate the spell checking program or (gasp!) your module has no POD -- then this policy passes.

To add exceptions on a module-by-module basis, add ``stopwords'' as described in the Pod::Spell manpage. For example:

   =for stopword gibbles
   =head1 Gibble::Manip -- manipulate your gibbles


This policy can be configured to tell which spell checker to use or to set a global list of spelling exceptions. To do this, put entries in a .perlcriticrc file like this:

  spell_command = aspell list
  stop_words = gibbles foobar

The default spell command is aspell list and it is interpreted as a shell command. We parse the individual arguments via the Text::ParseWords manpage so feel free to use quotes around your arguments. If the executable path is an absolute file name, it is used as-is. If it is a relative file name, we employ the File::Which manpage to convert it to an absolute path via the PATH environment variable. As described in Pod::Spell and Test::Spelling, the spell checker must accept text on STDIN and print misspelled words one per line on STDOUT.


the Pod::Spell manpage is not included with Perl::Critic, nor is a spell checking program.


Initial development of this policy was supported by a grant from the Perl Foundation.


Chris Dolan <cdolan@cpan.org>


Copyright (c) 2007 Chris Dolan. Many rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of this license can be found in the LICENSE file included with this module