http://perl.apache.org/docs/2.0/user/config/custom.html
The example under the heading 'Creating and Using Custom Configuration Directives', if copied verbatim, produces the following error when you run httpd -t: Can't locate object method "MyOtherParameter" via package "MyApache2::MyParameters".\n It took me a long time to figure this out, since, being a newbie, I thought the example would actually work out of the box, so I immediately jumped to making a pared-down version of it that only included something like MyOtherParameter with no callback, because the example seems to imply that this is possible, i.e., that somehow a default MyOtherParameter sub will be made/faked that does something like the code near the bottom of the document does: sub MyOtherParameter { set_val('MyOtherParameter', @_) } sub set_val { my ($key, $self, $parms, $arg) = @_; $self->{$key} = $arg; unless ($parms->path) { my $srv_cfg = Apache2::Module::get_config($self, $parms->server); $srv_cfg->{$key} = $arg; } } Of course, you might glean this from the text under the heading 'func': In our example with MyOtherParameter, mod_perl will use: __PACKAGE__ . '::MyOtherParameter' as a name of a subroutine and it anticipates that it exists in that package. ...but as a newbie I get confused at statements like this, because ::MyOtherParameter doesn't actually exist in the example. In fact, the first time I read it, I automatically generalized it in my mind, and assumed there must be somewhere else in the docs that would explain the default behaviour I had assumed to exist from the example, so I went off fruitlessly looking for that. So...maybe it's just me, but I feel like it would've been helpful to note in the example something like: # and we'd have to define sub MyOtherParameter (see 'func' below) And anyway, why isn't there such a default if MyOtherParameter doesn't exist?