NAME

Perl::Configure::Questions - Questions asked by perl's Configure

SYNOPSIS

use Perl::Configure::Questions;

my $q = Perl::Configure::Questions->new();

    # Add a new (customized) token/question
$q->add($token, $question, $sample_answer, $override)

    # These are used by Perl::Configure internally
my @questions = $q->questions();
my @patterns  = $q->patterns();
my @tokens    = $q->tokens();
my $by_key    = $q->by_key();

DESCRIPTION

questions() returns a list of questions asked by perl's Configure. patterns() just runs a quotemeta() on the strings returned by @questions. This module is used internally by Perl::Configure.

Question Format

The questions recognized by Perl::Configure are stored in YAML format in the __DATA__ section of Perl::Configure::Questions:

...
---
- vendor-specific-prefix
- Installation prefix to use for vendor-supplied add-ons?
- '/foobar'
---
...

The first line in each tuple (separated by --- according to YAML rules) holds the token, vendor-specific-prefix in the example above. The second line shows the question regular expression and the third line a 'sample answer', which is just used for documentation purposes.

Overriding Configure's defaults by default

If there is an optional forth line specifying an override answer, Perl::Configure will use this answer on a match that does not have an answer defined by the user. For example, when a part of the installation path is missing, perl's Configure will ask "Use that name anyway?" and provide "n" as a default. This, of course, is unfortunate, since accepting the default will cause Configure to pop the question again and have Perl::Configure enter an endless loop.

For this reason, "dir-check" has a fourth parameter defined that overrides Configure's default of "n" with "y":

- dir-check
- Use that name anyway?
- n
- y

Same holds true for the question of reusing an existing config.sh file, which gets overridden to "n" to start from a clean slate every time.

Fuzzy matching

Note that regex meta characters in the question line are not escaped. Instead, if a part of the question should match any text, use the ANY{...} clause:

...
---
- compiler-flags-special
- Any special flags to pass to ANY{cc -c} to compile shared library modules?
- '-fpic'
---
...

This will cause the question matcher to accept any text instead of cc -c, which comes in handy if Configure dynamically replaces these parts based on previous selections.

AUTHOR

Mike Schilli, m@perlmeister.com, 2006

COPYRIGHT AND LICENSE

Copyright (C) 2006 by Mike Schilli

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.5 or, at your option, any later version of Perl 5 you may have available.