c:\@Work\Perl\monks>perl -wMstrict -le "use Data::Dump qw(pp); ;; my %test = ( qr{ f [eio]+ e }xms => 'regex 1', qr{pure string} => 'regex 2', 'pure string' => 'string 1', ); pp \%test; ;; for my $str ( 'a pure string it is, yes!', 'a pure string too', 'xxx fiiiie yyy', ) { print qq{'$str'}; ;; for my $k (keys %test) { die $k, ' not a pure string: reference ', ref $k if ref $k; printf qq{$test{$k}: $k: }; print $str =~ /($k)/ ? qq{match, \$1 is '$1'} : 'NO match'; } print ''; } " { "(?^:pure string)" => "regex 2", "(?^msx: f [eio]+ e )" => "regex 1", "pure string" => "string 1", } 'a pure string it is, yes!' regex 1: (?^msx: f [eio]+ e ): NO match string 1: pure string: match, $1 is 'pure string' regex 2: (?^:pure string): match, $1 is 'pure string' 'a pure string too' regex 1: (?^msx: f [eio]+ e ): NO match string 1: pure string: NO match regex 2: (?^:pure string): NO match 'xxx fiiiie yyy' regex 1: (?^msx: f [eio]+ e ): match, $1 is 'fiiiie' string 1: pure string: NO match regex 2: (?^:pure string): NO match