in reply to Perlcritic and checking file modes

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,