use strict;
my $str = '{
server: \'nginx/1.21.0\',
date: \'Mon, 25 Apr 2022 11:34:20 GMT\',
\'content-type\': \'text/html; charset=UTF-8\',
\'transfer-encoding\': \'chunked\',
\'x-powered-by\': \'PHP/7.4.16\',
expires: \'Sun, 19 Nov 1978 05:00:00 GMT\',
\'cache-control\': \'no-store, no-cache, must-revalidate, max-stale=0, private, post-check=0, pre-check=0\',
\'x-content-type-options\': \'nosniff\',
\'content-security-policy\': "frame-ancestors \'self\';",
\'set-cookie\': [
\'SSESS8b04132f4690dc8ceb7837d5134a5519=ZbgVsmpp6DBRWwNCRMm5DTpfEoKffsNM7l8ILoCWkug; path=/; domain=test.net; secure; HttpOnly\',
\'su=1; expires=Thu, 22-Apr-2032 11:34:20 GMT; Max-Age=315360000; path=/; domain=test.net\',
\'lt=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; test.net\',
\'dtCookie=v_4_srv_10_sn_6364C36040ADFF47B91A838BB8B2CADD_perc_100000_ol_0_mul_1_app-3Aea7c4b59f27d43eb_1; Path=/; Domain=test.net\',
\'870be6fb89fc78ad2ca0eca3828e3019=7055c78f3c2b7311a5c77934caad6939; path=/; HttpOnly; Secure; SameSite=None\'
],
\'x-oneagent-js-injection\': \'true\',
\'x-ruxit-js-agent\': \'true\',
\'server-timing\': \'dtSInfo;desc="0", dtRpid;desc="493206686"\',
connection: \'close\'
}';
my $regex = qr/(SSESS.*)=(.+?);\s*path/mp;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html