Hello neilwatson,
IIRC those numbers are octal, but if I wrap them in oct() test 3 fails.
You have to remove the leading zero when wrapping in oct():
1:53 >perl -wE "say 022;" 18 1:53 >perl -wE "say oct(22);" 18 1:53 >perl -wE "say oct(022);" Illegal octal digit '8' ignored at -e line 1. 1 1:53 >
(Otherwise the argument to oct is converted from octal to decimal before it’s passed to oct.) So using:
my $mode = $sb[2] & oct(777); ... ok( ! ( $mode & oct(22) ), "File is not group or world writable" );
should make Perl::Critic happy. :-)
Update: Alternatively, you can stringify the argument to oct and leave the leading zero in place:
1:53 >perl -wE "say oct('022');" 18 2:08 >
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
In reply to Re: Perlcritic and checking file modes
by Athanasius
in thread Perlcritic and checking file modes
by neilwatson
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |