my %on_flags; my %off_flags = map { $_ => 1 } split //, 'xism'; my $pattern = "$compiled"; if ($pattern =~ /^\(\?([a-z]+)(?:-([a-z])+)?:(.*)\)\z/s) { (my $on_flags, my $off_flags, $pattern) = ($1, $2||''); %on_flags = map { $_ => 1 } split //, $on_flagfs; delete @off_flags{keys %on_flags}; %off_flags = map { $_ => 1 } split //, $off_flags; delete @on_flags{keys %off_flags}; } ...generate JavaScript code here...