#!/usr/bin/perl -- use strict; use warnings; use Data::Dumper; my $grammar = do { use Regexp::Grammars; qr{ }xms; }; my $string = "'hi'"; if ($string =~ $grammar) { print Dumper \%/; } __END__ =====> Trying from position 0 'hi' |...Trying | |...Trying hi' | | \_____ matched ''' | |...Trying | | \_____ matched '' | |...Trying | | \FAIL i' | | \_____ matched 'h' | |...Trying | | \FAIL ' | | \_____ matched 'hi' | |...Trying [eos] | | \_____ matched ''' | \_____ matched ''hi'' \_____ matched ''hi'' $VAR1 = { '' => '\'hi\'', 'delimited_string' => { '' => '\'hi\'', 'content' => 'hi', 'delim' => '\'', 'rdel' => '\'' } };