(相对)现代解决方案:使用File :: stat,一个自5.004以来的核心模块,以及Fcntl,它一直在Perl 5.参见perldoc -f stat.
use strict;
use warnings;
use File::stat;
use Fcntl qw(:mode);
...
my $mode = stat($filename)->mode;
my $allCanRead = ($mode & S_IRUSR) # User can read
&& ($mode & S_IRGRP) # Group can read
&& ($mode & S_IROTH); # Others can read
Run Code Online (Sandbox Code Playgroud)
来自perldoc:
$mode = (stat($filename))[2];
printf "Permissions are %04o\n", $mode & 07777;
Run Code Online (Sandbox Code Playgroud)
要提取其他读取位,您可以这样做
print "read for everyone" if $mode & 4; # pick bit 2 from mode
Run Code Online (Sandbox Code Playgroud)