sub regexp($) { my $r=shift; return unless B::svref_2object($r)->MAGIC->TYPE =~/r/; my $pattern=ref $r eq 'Regexp' ? "$r" : ''.qr/$r/; if (wantarray) { my $mods; $pattern=~s/^\(\?([msix]*)(?:-[msix]+)?:/$mods=$1; ""/e or die "Error! $r $pattern"; chop $pattern; return ($pattern,$mods); } else { return $pattern } }