#!/usr/bin/perl --
use strict; use warnings;
print qr{yo}usim, "\n";
$::yo++;
print qr{yo}usim, "\n";
$::yo--;
use YAML::XS;
print YAML::XS::Dump( [ qr{yo}usim ] ), "\n";
package Regexp;
use Data::Dump;
sub ixsm { #~ (?s-xim:s)
my( $i )=@_;
my %onoff = ( qw/ s 0 i 0 m 0 x 0 / );
$onoff{$1}++ while $i =~ /(.)/g;;
delete $onoff{$_} for qw/ o a l u d /;
my @off;
my @on;
while( my($k,$v) = each %onoff ){
push @on, $k if $v;
push @off, $k if not $v;
}
my $on = join'',@on;
my $off = join'',@off;
my $ret = "(?$on";
$ret .="-$off" if length $off;
$ret;
}
use overload '""' => sub {
my( $self_operand_overloaded, $other_operand, $other_operand_was_o
+n_the_left_side ) = @_;
my( $patt, $mods ) = re::regexp_pattern( $self_operand_overloaded
+);
$::yo and return ixsm($mods).':'.$patt.')'; ## oldstyle
return $self_operand_overloaded; ## modern
};
__END__
(?^umsi:yo)
(?msi-x:yo)
---
- !!perl/regexp (?^umsi:yo)
Seems YAML::XS doesn't process overloads, peeks inside like Devel::Peek |