fix litsplit() patterns
parent
1729668afe
commit
d00d80f474
|
@ -631,15 +631,22 @@ sub hashmrg
|
||||||
return $h;
|
return $h;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# AQG = Apostrophe + Quote + Grave
|
||||||
|
our $litsplit_AQG = qr/\'(?:[^\'\\]+|\\.)+\'|\"(?:[^\"\\]+|\\.)+\"|\`(?:[^\`\\]+|\\.)+\`/;
|
||||||
|
our $litsplit_AQ = qr/\'(?:[^\'\\]+|\\.)+\'|\"(?:[^\"\\]+|\\.)+\"/;
|
||||||
|
our $litsplit_QG = qr/\"(?:[^\"\\]+|\\.)+\"|\`(?:[^\`\\]+|\\.)+\`/;
|
||||||
|
our $litsplit_AG = qr/\'(?:[^\'\\]+|\\.)+\'|\`(?:[^\`\\]+|\\.)+\`/;
|
||||||
|
our $litsplit_A = qr/\'(?:[^\'\\]+|\\.)+\'/;
|
||||||
|
our $litsplit_Q = qr/\"(?:[^\"\\]+|\\.)+\"/;
|
||||||
|
our $litsplit_G = qr/\`(?:[^\`\\]+|\\.)+\`/;
|
||||||
|
|
||||||
# разбиение строки по регэкспу, однако не как split(//), а с учётом литералов,
|
# разбиение строки по регэкспу, однако не как split(//), а с учётом литералов,
|
||||||
# входящих в строку. границы литералов можно задавать доп.аргументом
|
# входящих в строку. границы литералов можно задавать доп.аргументом
|
||||||
my $deflit = qr/\'(?:[^\'\\]+|\\.)+\'|\"(?:[^\"\\]+|\\.)+\"|\`(?:[^\`\\]+|\\.)+\`/;
|
|
||||||
|
|
||||||
# @a = litsplit /PATTERN/, EXPR[, LIMIT[, /LITERAL_PATTERN/]]
|
# @a = litsplit /PATTERN/, EXPR[, LIMIT[, /LITERAL_PATTERN/]]
|
||||||
sub litsplit
|
sub litsplit
|
||||||
{
|
{
|
||||||
my ($re, $s, $lim, $lit) = @_;
|
my ($re, $s, $lim, $lit) = @_;
|
||||||
$lit ||= $deflit;
|
$lit ||= $litsplit_AQG;
|
||||||
my @r;
|
my @r;
|
||||||
my $l = 0;
|
my $l = 0;
|
||||||
my $ml;
|
my $ml;
|
||||||
|
|
Loading…
Reference in New Issue