From 83f48805cb1c97d1a19ec5ed1a65b75aa1c494d8 Mon Sep 17 00:00:00 2001 From: Petro Vashchuk Date: Mon, 22 Feb 2021 13:46:44 +0200 Subject: [PATCH] Bug 27746: prevent regexp undefined warning when checking subfield contents ($oclc) Some of the books have subfield "a" of field "035" absent and it's possible to have such (it doesn't says "Require" in the interface), which causes "Use of uninitialized value $oclc in pattern match (m//)" error. Solved by screening regex with check for empty variables before the match. To reproduce: 1) Edit existing book or create a new one with empty marc subfield "a" of field "035" 2) Use the search feature that will find it along with some other books. 3) Check /var/log/koha/kohadev/plack-intranet-error.log to find "Use of uninitialized value $oclc in pattern match (m//)" error. 4) Apply the patch. 5) Repeat the search and check the logs again to ensure that error didn't appear again. --- C4/Koha.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/C4/Koha.pm b/C4/Koha.pm index aac05c76f9..c08ee6ad44 100644 --- a/C4/Koha.pm +++ b/C4/Koha.pm @@ -671,7 +671,7 @@ sub GetNormalizedOCLCNumber { my @fields = $marcrecord->field('035'); foreach my $field (@fields) { my $oclc = $field->subfield('a'); - if ($oclc =~ /OCoLC/) { + if ($oclc && $oclc =~ /OCoLC/) { $oclc =~ s/\(OCoLC\)//; return $oclc; } -- 2.28.0