http://qs321.pair.com?node_id=1198767


in reply to Freezing a regular expression qr()

You can use the convert_blessed option. To add a TO_JSON method to regexes, just define it in the ref qr() namespace, i.e. Regexp :
#! /usr/bin/perl use warnings; use strict; use JSON::XS; my $json = JSON::XS->new->convert_blessed; sub Regexp::TO_JSON { "" . shift } my $re = qr/^-{1,}\z/; print $json->encode([$re]), "\n";

Update:

You can even localize the change, so that regexes behave normally in other parts of the code:

{ no strict 'refs'; local *{'Regexp::TO_JSON'} = sub { "" . shift }; print $json->encode($re), "\n"; }

($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,