+=head1 VARIABLES
+
+These variables control if the wildcards jokers and brackets must capture their match. They can be globally set by writing in your program
+
+ $Regexp::Wildcards::CaptureSingle = 1;
+ # From then, the '?' joker is capturing
+
+or can be locally specified via C<local>
+
+ {
+ local $Regexp::Wildcards::CaptureAny = 1;
+ # In this block, the '?' joker is capturing.
+ ...
+ }
+ # Back to the situation from before the block
+
+This section describes also how those elements are translated by the L<functions|/FUNCTIONS>.
+
+=head2 C<$CaptureSingle>
+
+When this variable is true, each occurence of the unescaped C<?> joker is made capturing in the resulting regexp (they are be replaced by C<(.)>). Otherwise, they are just replaced by C<.>. Default is the latter.
+
+ 'a???b\\??' is translated to 'a(.)(.)(.)b\\?(.)' if $CaptureSingle is true
+ 'a...b\\?.' otherwise (default)
+
+=cut
+
+our $CaptureSingle = 0;
+
+=head2 C<$CaptureAny>
+
+By default this variable is false, and successions of unescaped C<*> jokers are replaced by B<one> single C<.*>. When it evalutes to true, those sequences of C<*> are made into B<one> capture, which is greedy (C<(.*)>) for C<$CaptureAny E<gt> 0> and otherwise non-greedy (C<(.*?)>).
+
+ 'a***b\\**' is translated to 'a.*b\\*.*' if $CaptureAny is false (default)
+ 'a(.*)b\\*(.*)' if $CaptureAny > 0
+ 'a(.*?)b\\*(.*?)' otherwise
+
+=cut
+
+our $CaptureAny = 0;
+
+=head2 C<$CaptureBrackets>
+
+If this variable is set to true, valid brackets constructs are made into C<( | )> captures, and otherwise they are replaced by non-capturing alternations (C<(?: | >)), which is the default.
+
+ 'a{b\\},\\{c}' is translated to 'a(b\\}|\\{c)' if $CaptureBrackets is true
+ 'a(?:b\\}|\\{c)' otherwise (default)
+
+=cut
+
+our $CaptureBrackets = 0;
+