Re: pgsql: Fix perltidy breaking perlcritic

Поиск
Список
Период
Сортировка
От Dagfinn Ilmari Mannsåker
Тема Re: pgsql: Fix perltidy breaking perlcritic
Дата
Msg-id 8735cwncig.fsf@wibble.ilmari.org
обсуждение исходный текст
Ответ на pgsql: Fix perltidy breaking perlcritic  (Alvaro Herrera <alvherre@alvh.no-ip.org>)
Ответы Re: pgsql: Fix perltidy breaking perlcritic  (John Naylor <john.naylor@enterprisedb.com>)
Список pgsql-committers
Andrew Dunstan <andrew@dunslane.net> writes:

> On Fri, Sep 9, 2022 at 10:44 PM John Naylor <john.naylor@enterprisedb.com>
> wrote:
>
>> On Fri, Sep 9, 2022 at 3:32 AM Andrew Dunstan <andrew@dunslane.net> wrote:
>>
>> > A better way do do this IMNSHO is to put the eval in a block on its own
>> along with the no critic marker on its own line, like this:
>> >
>> > {
>> >    ## no critic (ProhibitStringyEval)
>> >    eval ...
>> > }
>> >
>> > perlcritic respects block boundaries for its directives.
>>
>> I tried that in the attached -- it looks a bit nicer but requires more
>> explanation. I don't have strong feelings either way.
>>
>>
> Maybe even better would be just this, which I bet perltidy would not monkey
> with, and would require no explanation:
>
> eval "\$hash_ref = $_";  ## no critic (ProhibitStringyEval)

I didn't see this until it got committed, since I'm not subscribed to
-committers, but I think it would be even better to rely on the fact
that eval returns the value of the last expression in the string, which
also gets rid of the ugly quoting and escaping, per the attached.

- ilmari

From 8ef12d134e0a21c289796207d87244ba5f5ec92c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dagfinn=20Ilmari=20Manns=C3=A5ker?= <ilmari@ilmari.org>
Date: Mon, 12 Sep 2022 10:43:16 +0100
Subject: [PATCH] Use return value of eval instead of assigning inside string

---
 src/backend/catalog/Catalog.pm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index 919a828ca7..41bbabdfee 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -315,7 +315,7 @@ sub ParseData
                     # We're treating the input line as a piece of Perl, so we
                     # need to use string eval here. Tell perlcritic we know what
                     # we're doing.
-                    eval "\$hash_ref = $_"; ## no critic (ProhibitStringyEval)
+                    $hash_ref = eval $_;    ## no critic (ProhibitStringyEval)
                     if (!ref $hash_ref)
                     {
                         die "$input_file: error parsing line $.:\n$_\n";
@@ -361,7 +361,7 @@ sub ParseData
         # the whole file at once.
         local $/;
         my $full_file = <$ifd>;
-        eval "\$data = $full_file"    ## no critic (ProhibitStringyEval)
+        $data = eval $full_file    ## no critic (ProhibitStringyEval)
           or die "error parsing $input_file\n";
         foreach my $hash_ref (@{$data})
         {
-- 
2.34.1


В списке pgsql-committers по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: pgsql: pgstattuple: Use double consistently for percentages
Следующее
От: Daniel Gustafsson
Дата:
Сообщение: pgsql: Fix NaN comparison in circle_same test