use strict;
use warnings;
sub is_delimiter_balanced {
my ($delimiter, $text) = @_;
return
(
substr($text,0,1) =~ m|^[\Q$delimiter\E]|
and
$text =~ m/ \Q$delimiter\E [^\\$delimiter]* (\\.[^\\$delimiter]*)* \Q$delimiter\E /gcsx
);
}
use Data::Dumper;
print "first:\n";
print Dumper(is_delimiter_balanced(q{'}, q{'a\'b'test}));
print "second:\n";
print Dumper(is_delimiter_balanced(q{'}, q{'a\'btest}));
输出:
first:
$VAR1 = '\\\'b';
second: