in reply to Splitting string based on potentially escaped character

G'day clamport,

Welcome to the Monastery.

"Does anyone have any recommendations?"

If $SEP_CHAR really is a character, then transliteration is possibly your best bet.

$ perl -E 'say "a+b+c" =~ y/+/_/r' a_b_c

If $SEP_CHAR isn't a character, I'd suggest giving it a more meaningful, and less confusing, name; perhaps $SEP_STR for a separator string. In this case, substitution (as already suggested) would be a better option.

$ perl -E 'my ($x, $y, $z) = qw{a+b+c + __}; say $x =~ s/\Q$y/$z/gr' a__b__c

If you're using '\Q' to escape characters to the end of the string, the '\E' is superfluous. You really only need this if you want to escape part of a string.

$ perl -E 'my ($x, $y) = qw{++ --}; say for "\Q$x\E$y", "$x\Q$y", "\Q$ +x$y"' \+\+-- ++\-\- \+\+\-\-

See also:

— Ken