http://qs321.pair.com?node_id=1208735


in reply to creating qr from existing regex

This is indeed a string that contains a qr expression:

{"name" => 'qr/.*uba$/i'}

Does removing the quotes solve your problem?

{"name" => qr/.*uba$/i}

When you perform string manipulations to form your qr-expression, you might find quotemeta useful.

Replies are listed 'Best First'.
Re^2: creating qr from existing regex
by Bobert1234 (Novice) on Feb 08, 2018 at 18:26 UTC
    i figured it out. The issue was that when i created the $re variable, it was adding the slashes. by using just what was inside the slashes of the original string, i managed to get it to work
    if(index($_[0],"qr/") >= 0){ $_[0] =~s/qr[\/](.*?)([^\\])[\/](i?)$/$1$2/s; print $fh Dumper($_[0]); if($3=='i'){ $_[0] = qr/$_[0]/i; }else{ $_[0] = qr/$_[0]/; } print $fh Dumper($_[0]); }

      Maybe use split

      my $string = '/.*uba$/i'; my @f = split '/',$string; my $qr = ($f[-1] eq 'i') ? qr/$f[1]/i : qr/$f[1]/; my $cursor = $collection->query( { name=> $qr });
      poj

        that could work in general, but the input is dynamic, and someone might put in an escaped slash, i.e. \/