我有一个旧的perl脚本,它始终有效,但突然出现了一些没有删除文件的内容。
-rw-r--r-- 1 nobody uworld 6 Dec 03 11:15 shot32.file
删除上述文件的命令位于perl脚本
中`rm $shotfile`;
我检查过$ shotfile是shot32.file,它位于正确的位置。 所以文件位置和文件名不是问题。
关于权限,perl脚本也在nobody用户下运行,因此可能是其他原因无效。
感谢您的帮助。
答案 0 :(得分:15)
要删除文件,您需要对该文件所在的目录具有写入权限。该文件的权限不重要。
那就是说,你已经有了一些相当糟糕的代码。你只需要运行rm
(你可以直接运行而不需要通过shell)来进行炮轰(没有逃避任何东西,你好贝壳注入!),并且你正在捕捉它毫无理由地输出(并且你无视任何被捕获的东西)。此外,您还没有检查错误(这种形式也会更难)。
这比以前要复杂得多。 Perl有一个用于删除文件的内置函数:
unlink $shotfile or warn "$0: can't unlink $shotfile: $!\n";
这将删除文件或警告您有任何问题($!
包含失败的原因)。如果您希望程序中止,请将warn
更改为die
。