http://www.perlmonks.org?node_id=998838


in reply to Passing regex to a subroutine

G'day ll001,

I see that ++aitap has identified your problem.

Seeing your usage of $regexStr, I was wondering if you were aware that qr{...} does not return a string per se. It actually returns a Regexp object. When stringified, this is overloaded to produce something you may not have expected.

$ perl -e 'my $regexStr = qr{[0-9]+}; print "$regexStr\n"; print ref($regexStr), "\n"; ' (?^:[0-9]+) Regexp

See perlop - Regexp Quote-Like Operators for details.

-- Ken