为什么在Perl chmod中使用int()?

时间:2014-02-26 15:40:36

标签: perl chmod

为什么在Perl文件中设置perms时需要使用int()函数?

die "blab, blah"
    if (! chmod(int(0664), $tmp_file));

我可以理解oct()的使用,如下面的perldoc示例所示:

$mode = "0644"; chmod(oct($mode), $tmp_file);

但int()函数?

修改

为了完整起见,这是perldoc -f chmod的推荐......

$mode = 0644;   chmod $mode, "foo";      # this is best

1 个答案:

答案 0 :(得分:10)

这绝对没有意义。 0664已经产生一个整数。

$ perl -MDevel::Peek -e'Dump(0664)'
SV = IV(0x7a6118) at 0x7a6128
  REFCNT = 1
  FLAGS = (PADTMP,IOK,READONLY,pIOK)
  IV = 436

IOK表示标量包含整数值。

这肯定是某人以oct("0644")开头的结果,但当他们不再使用字符串时却不太了解他们在做什么。