The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Perl::Critic::Policy::Plicease::ProhibitLeadingZeros - Leading zeroes are okay as the first arg to chmod, and other such reasonableness

VERSION

version 0.05

SYNOPSIS

perlcriticrc:

 [Plicease::ProhibitLeadingZeros]

code:

 0123;               # not ok
 1234;               # ok
 chmod 0700;         # ok
 mkpath($foo, 0700); # ok

DESCRIPTION

Perl interprets numbers with leading zeros as octal. If that's what you really want, its better to use oct and make it obvious. However, some operations are well known as using octal such as chmod and mkpath so this policy disallows mistakes like this:

 my $x = 1231;
 my $y = 2345;
 my $z = 0032;

But not non-mistakes like this:

 chmod 0700, "secret_file.txt";

or this:

 use File::Path qw( mkpath );
 
 mkpath("/foo/bar/baz", 1, 0700);

or is this:

 use Path::Class qw( dir );
 
 dir()->mkpath(1,0700);

AFFILIATION

None.

CONFIGURATION

This policy is not configurable except for the standard options.

CAVEATS

Because mkpath is not a built in (as chmod is), this policy does not differentiate between the mkpath function provided by File::Path or the mkpath method provided by Path::Class::Dir and arbitrary mkpath function or methods that you or someone else might define. Also, there is no way to really check if the object invocant of a mkpath method is really an instance of Path::Class::Dir.

SEE ALSO

This policy is based largely on the existing in-core policy, and one in the lax bundle, but adds a few exceptions that I find useful.

Perl::Critic::Policy::ValuesAndExpressions::ProhibitLeadingZeros
Perl::Critic::Policy::Lax::ProhibitLeadingZeros::ExceptChmod

AUTHOR

Author: Graham Ollis <plicease@cpan.org>

Contributors:

Ville Skyttä (SCOP)

COPYRIGHT AND LICENSE

This software is copyright (c) 2019-2024 by Graham Ollis.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.