Perl Critic: Comma used to separate statements
Asked Answered
D

1

8

Follow code is not accepted by Critic, severity 4:

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

I get this 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?

Dael answered 2/2, 2012 at 10:44 Comment(4)
WOuld it help if you write return ({ .... }); ?Mcnamara
I cannot reproduce this behaviour. What version of Perl::Critic are you using?Trent
I cannot reproduce the problem: perlcritic --brutal -s ValuesAndExpressions::ProhibitCommaSeparatedStatements so9110962.pl␤so9110962.pl source OK Perhaps upgrade PPI and Perl::Critic?Sanasanabria
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.Zygoma
A
7

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.

Archaize answered 2/2, 2012 at 11:32 Comment(1)
Thanks, upgrading to the last version indeed helped (and created a whole new list of criticisms for code that previously passed, too - yay! :])Dael

© 2022 - 2024 — McMap. All rights reserved.