use strict; use warnings; my $s='(?-xism:a)'; my $re=qr{a}; # regex and string are clearly different ref types print "-------Type------------\n"; print "ref $re (regex) is 'Regexp': " , (ref($re) eq 'Regexp' ?'true':'false'), "\n"; print "ref $s (string) is '': " , (ref($s) eq '' ?'true':'false'), "\n"; print "ref $s (string) is not 'Regexp': " , (ref($s) ne 'Regexp' ?'true':'false'), "\n"; # so why are they equal? print "-------Equality--------\n"; print "comparing literals: qr{a} eq '(?-xism:a)': " , (qr{a} eq '(?-xism:a)'?'true':'false'), "\n"; print "comparing variables: regex eq $s (string): " , ($s eq $re?'true':'false'), "\n";