【发布时间】:2021-05-11 16:13:39
【问题描述】:
假设我有一个文件/var/tmp/filename。
在 Perl 中,我写了以下 sn-p:
#!/usr/bin/env perl
use strict;
use warnings;
if (-W /var/tmp/filename)
{
...
}
exit;
-W 和 -w 函数 (http://perldoc.perl.org/functions/-X.html) 会检查文件是否可以实际写入,还是只检查文件权限是否允许写入?
我问的原因是我正在编写一个从服务器获取 cookie 的脚本。
此脚本需要能够将 cookie 文件写入文件系统,但如果 cookie 文件的文件系统路径是只读的,则文件的权限无关紧要。所以我想测试 cookiefile 是否真的可写,而不是仅仅检查它的权限。
【问题讨论】:
-
我没有任何系统可以故意将文件系统设置为只读,因此我无法对其进行测试。因此,问题是 -w 和 -W 是如何工作的。
-
您可以尝试使用 cd 或 dvd。它们是只读文件系统。
-
不幸的是,我在 Rackspace 托管的云服务器上编写此内容时,无法对服务器进行物理访问。也不是我的服务器,所以我没有 root。
-
使用 linux,您可以轻松地创建一个文件系统并使用您想要的任何读/写或只读选项挂载它。您可以在物理 Linux 安装、VM 或租用的 VPS 上执行此操作。
-
测试文件是否可写的最简单和最好的方法是使用写入或附加访问权限打开它并尝试写入。
标签: perl file-permissions