文件属性不起作用

时间:2013-10-03 12:57:13

标签: perl

我正在尝试创建一个只读的文件,然后检查它是否可以使用文件属性进行读写,但它总是返回它是可读写的。

我做错了什么?

  use strict;
  use Fcntl;
  sysopen(DATA, "file.txt", O_CREAT | O_RDONLY );
  print DATA "Bob\n";
  close (DATA); 

  my $file='file.txt';
  my (@description,$size);
  if (-e $file)
   {
    push @description, 'readable' if (-r _);
    push @description, 'writable' if (-w _);
    push @description, (($size = -s _)) ? "$size bytes" : 'empty';
    print "$file is ", join(', ',@description),"\n";
    } 

这里打印的是什么:
enter image description here

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

您的进程的umask值以及默认的PERMS值0666为您提供可写文件。更改umask或将PERMS参数添加到sysopen。例如,要获取只读文件,当默认umask为0022时,您可以执行以下操作:

sysopen(DATA, "file.txt", O_CREAT | O_RDONLY, 0466 );