如何找出目录的模式(权限)?

时间:2010-12-13 18:10:03

标签: perl

如何找出目录的模式(权限)?

4 个答案:

答案 0 :(得分:8)

根据perldoc -f stat

$mode = (stat($filename))[2];
printf "Permissions are %04o\n", $mode & 07777;

答案 1 :(得分:5)

其他示例要求您知道模式是stat输出中的第三项(即[2])。 File :: stat允许您给出符号名称。

use File::stat ;
my $dir = '/etc/cron.d' ;
printf "%o", stat($dir) -> mode ;

答案 2 :(得分:2)

my $mode;
(undef, undef, $mode) = stat($directoryname);

答案 3 :(得分:0)

到目前为止答案很好。我希望增加一个好的模块。

大多数情况下,您只想知道文件的模式,以便以后可以对其进行操作。 use Fcntl qw(:mode)use POSIX qw(:sys_stat_h)导出必要的常量,例如S_IXUSR。我觉得这很笨拙,甚至容易出错,因为这是Perl中罕见的时间,你会遇到八进制数和位运算符的数学。

为此, File::chmod具有更好的界面,因为它可以让您表达更改

  • 无需明确查询旧模式并计算新模式,
  • 以比八进制更熟悉的方式,即
    • 符号,来自chmod(1),例如u-x
    • ls(1)类似,例如-rw-r--r--