s/(?:)// will do nothing (or rather, replace one-zero length string with another zero-length string). So, if you have a possibly-empty pattern in a variable, you could use
s/(?:$pat)//
or
my $re = qr/$pat/; s/$re//
The latter was buggy before 5.18 as it resulted in the same as s/// when $pat contained an empty string.
In reply to Re^5: no way it's not a bug of Perl
by ikegami
in thread I thought I found a bug of Perl
by vincentaxhe
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |