获取 Linux/Perl 上的权限位字符串?

Get permission bits string on Linux/Perl?

我想编写一个 shell / Perl 脚本来检查文件是否设置了特定的权限位。

例如我想检查一个文件是否有像

这样的权限
drwxr-s--- 

当我在 Perl 中使用 stat 函数时,它给了我一个十进制数。 有没有办法在我的 perl 脚本中得到像上面那样的确切字符串并进行比较? 如果没有 - 有没有办法将该字符串转换为数字然后进行比较?

为什么不直接将十进制数转换为二进制形式并使用二进制与或异或?

此代码为您提供二进制权限:

printf '%b', (stat 'filename.txt')[2] & 07777;

例如-rw-r-----二进制形式就是110100000。

我以某种方式获得了需要比较的数字,这就是我用来获得所需答案的数字 -

my $mode = (stat('$file'))[2];
printf("permissions are %04o\n", $mode & 07777);

这对我有用!!