in reply to perlcritic & test files

How I can prevent this error?
That's the wrong approach.

You don't have an error. If there's an error, it's perlcritic complaining about something that's obviously not needed.

Simple solution: don't run perlcritic on your test files. ;-).

Replies are listed 'Best First'.
Re^2: perlcritic & test files
by osbosb (Monk) on Aug 02, 2011 at 16:59 UTC
    I'm not contributing anything to the OP, but this made me wonder about perl critic. So I installed and and started to play. Everything I've written, so far, passes it(at least from the documentations example) so I deliberately coded something that does not pass strictures:
    #!/usr/bin/perl use strict; use warnings; $thing = "bleh"; print "hello $thing $bleh\n";
    Here's critic:
    #!/usr/bin/perl use strict; use warnings; use Perl::Critic; my $file = shift; my $critic = Perl::Critic->new(); my @violations = $critic->critique($file); print "@violations\n";
    And here's my result:
    $ perl critic ;perl thing Global symbol "$thing" requires explicit package name at thing line 6. Global symbol "$thing" requires explicit package name at thing line 8. Global symbol "$bleh" requires explicit package name at thing line 8. Execution of thing aborted due to compilation errors.
    What's the purpose of this 'critic' module anyhow?
      Your small code sample has no violations using the default settings on Perl::Critic. However, you can turn up the severity, and start to get complaints. I am more familiar with the perlcritic command line tool:
      $ perlcritic -1 critic Code is not tidy at line 1, column 1. See page 33 of PBP. (Severity: + 1) Use Emacs file variables to declare coding style at line 1, column 1. + Emacs can read per-file settings. (Severity: 2) RCS keywords $Id$ not found at line 1, column 1. See page 441 of PBP. + (Severity: 2) RCS keywords $Revision$, $HeadURL$, $Date$ not found at line 1, column + 1. See page 441 of PBP. (Severity: 2) RCS keywords $Revision$, $Source$, $Date$ not found at line 1, column +1. See page 441 of PBP. (Severity: 2) Missing Perl version at line 1, column 1. Add "use 5.006" or similar. + (Severity: 1) No package-scoped "$VERSION" variable found at line 1, column 1. See +page 404 of PBP. (Severity: 2) Return value of flagged function ignored - print at line 11, column 1. + See pages 208,278 of PBP. (Severity: 1)
      Your results may vary depending on the version of Perl::Critic (I also have additional policies loaded on my system).

      UPDATE: Why didn't you pass a filename on the command line to your critic program? $file has not been assigned a value.

      Also, to set the severity in your critic program:

      my $critic = Perl::Critic->new(-severity=>1);