Good to hear it works. I would have used a bracketed character class like [\\\/] but it turns out that a sequence of delimiters is treated as individual characters so that's unnecessary. It's in the docs now that I read them, so the rest of the post is partly for reference by my future self.
print $RE{delimited}{-delim => 'ab'};
gives
(?:(?|(?:a)(?:[^\\a]*(?:\\.[^\\a]*)*)(?:a)|(?:b)(?:[^\\b]*(?:\\.[^\\b] +*)*)(?:b)))
If one uses a character class then the square brackets are treated as delimiters.
print $RE{delimited}{-delim => '[\\\/]'};
gives
(?:(?|(?:\[)(?:[^\\\[]*(?:\\.[^\\\[]*)*)(?:\[)|(?:\\)(?:[^\\]*(?:(?:\\ +\\)[^\\]*)*)(?:\\)|(?:\\)(?:[^\\]*(?:(?:\\\\)[^\\]*)*)(?:\\)|(?:\/)(? +:[^\\\/]*(?:\\.[^\\\/]*)*)(?:\/)|(?:\])(?:[^\\\]]*(?:\\.[^\\\]]*)*)(? +:\])))
...and a RegExp object appears to be stringified and then treated as a sequence of characters.
print qr'a'; print "\n\n"; print $RE{delimited}{-delim => qr'a'}; print "\n";
gives
(?^:a) (?:(?|(?:\()(?:[^\\\(]*(?:\\.[^\\\(]*)*)(?:\()|(?:\?)(?:[^\\\?]*(?:\\. +[^\\\?]*)*)(?:\?)|(?:\^)(?:[^\\\^]*(?:\\.[^\\\^]*)*)(?:\^)|(?:\:)(?:[ +^\\\:]*(?:\\.[^\\\:]*)*)(?:\:)|(?:a)(?:[^\\a]*(?:\\.[^\\a]*)*)(?:a)|( +?:\))(?:[^\\\)]*(?:\\.[^\\\)]*)*)(?:\))))
In reply to Re^3: Delimiters in Regexp::Common
by swl
in thread Delimiters in Regexp::Common
by rongrw
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |