Bug 12654 Correct incorrectly quoted regexp
authorColin Campbell <colin.campbell@ptfs-europe.com>
Thu, 24 Jul 2014 16:12:42 +0000 (17:12 +0100)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Wed, 30 Jul 2014 14:06:27 +0000 (11:06 -0300)
A compile time warning was being generated because \ does not quote
{ Replace the plethora of \ before meta and presumed meta characters
by \Q \E which gets perl to generate all the necessary escapes, we can
assume it knows its regex engine as well or better than the human
programmer

Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Verified change reading the perldoc and also checked that
./misc/link_bibs_to_authorities.pl is no longer showing
the warn and still works.

Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Works as described, running:
 prove t/db_dependent/AuthoritiesMarc.t
doesn't show the warning anymore.

C4/AuthoritiesMarc.pm

index 95fe33a..e983159 100644 (file)
@@ -853,7 +853,7 @@ sub FindDuplicateAuthority {
         $op = 'and';
     }
     my $query='at:'.$authtypecode.' ';
-    my $filtervalues=qr([\001-\040\!\'\"\`\#\$\%\&\*\+,\-\./:;<=>\?\@\(\)\{\[\]\}_\|\~]);
+    my $filtervalues=qr([\001-\040\Q!'"`#$%&*+,-./:;<=>?@(){[}_|~\E\]]);
     if ($record->field($auth_tag_to_report)) {
         foreach ($record->field($auth_tag_to_report)->subfields()) {
             $_->[1]=~s/$filtervalues/ /g; $query.= " $op he:\"".$_->[1]."\"" if ($_->[0]=~/[A-z]/);