The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

#!/usr/bin/perl -w
use strict;
if (@ARGV and $ARGV[0] eq '-h') {
die << "USAGE";
usage: explain [ismx] < regex
ismx the regex modifiers in effect
regex the regex, either on standard input, or as the second arg
USAGE
}
my $mode = shift || '';
my $regex;
my $exp;
{ local $/; chop($regex = <>) }
$exp = YAPE::Regex::Explain->new(eval "qr/\$regex/$mode");
$exp->parse or $exp->error and die "explain error: " . $exp->error . "\n";
print $exp->explain;