Perl Critic: coma utilizada para separar declaraciones

Follow code is not accepted by Critic, severity 4:

return {
    'debug'  => $debug,
    'identifier' => $identifier
};

Me sale este error:

# Perl::Critic found these violations in "filename.pl":
# Comma used to separate statements at line 356, column 3.  See pages 68,71 of PBP.  (Severity: 4)

But this code is accepted without any remark:

my $result = {
    'debug' => $debug,
    'identifier' => $identifier
};

return $result; 

Is it really better to write my return using a temporary variable, or is the critic wrong in detecting a Comma used to separate statements while I'm just constructing and returning a hashref?

preguntado el 02 de febrero de 12 a las 10:02

WOuld it help if you write return ({ .... }); ? -

I cannot reproduce this behaviour. What version of Perl::Critic ¿Estas usando? -

I cannot reproduce the problem: perlcritic --brutal -s ValuesAndExpressions::ProhibitCommaSeparatedStatements so9110962.pl␤so9110962.pl source OK Perhaps upgrade PPI and Perl::Critic? -

I suggest using a temp array then return its address like my %ans = { ...} ; return \%ans, you are indicating that your are returning an hashref and not a function block. -

1 Respuestas

I found this bug in version 1.105, it is gone in version 1.116. It got fixed somewhere in between there.

The fix is not mentioned in the change logs, but PPI changes are mentioned. May have been a PPI error.

Respondido 02 Feb 12, 15:02

Thanks, upgrading to the last version indeed helped (and created a whole new list of criticisms for code that previously passed, too - yay! :]) - Konerak

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.