The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


YAPE::Regex::Explain - explanation of a regular expression


This document refers to YAPE::Regex::Explain version 4.01.


  use YAPE::Regex::Explain;
  my $exp = YAPE::Regex::Explain->new($REx)->explain;


The YAPE hierarchy of modules is an attempt at a unified means of parsing and extracting content. It attempts to maintain a generic interface, to promote simplicity and reusability. The API is powerful, yet simple. The modules do tokenization (which can be intercepted) and build trees, so that extraction of specific nodes is doable.


This module merely sub-classes YAPE::Regex, and produces a rather verbose explanation of a regex, suitable for demonstration and tutorial purposes.

Methods for YAPE::Regex::Explain

  • my $p = YAPE::Regex::Explain->new($regex);

    Calls YAPE::Regex's new method (see its docs).

  • my $p = YAPE::Regex::Explain->explain($mode);

    Returns a string explaining the regex. While not required for all regexes, it is sometimes necessary to compile the regex using the qr// operator before passing it to the explain method. If $mode is regex, it will output a valid regex (instead of the normal string). If $mode is silent, no comments will be added, but the regex will be expanded into a readable format.


Print the full explanation for the regex \Q[abc]\E\d+, compiling it first:

    print YAPE::Regex::Explain->new(qr/\Q[abc]\E\d+/)->explain();

Print the explanation for the regex \w[a-f]*, without comments:

    print YAPE::Regex::Explain->new('\w[a-f]*')->explain('silent');

Print the explanation for a multi-line regex:

    my $re = qr{
            (foo|bar)   # just a comment
    print YAPE::Regex::Explain->new($re)->explain();


There is no support for regular expression syntax added after Perl version 5.6, particularly any constructs added in 5.10. For examples, refer to:




The original author is Jeff "japhy" Pinyan (CPAN ID: PINYAN).

Gene Sullivan ( is a co-maintainer.


This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic.