无法从Perl脚本

时间:2017-12-03 17:03:11

标签: perl unix

我有一个旧的perl脚本,它始终有效,但突然出现了一些没有删除文件的内容。

-rw-r--r--    1 nobody   uworld           6 Dec 03 11:15 shot32.file

删除上述文件的命令位于perl脚本

`rm $shotfile`;

我检查过$ shotfile是shot32.file,它位于正确的位置。 所以文件位置和文件名不是问题。

关于权限,perl脚本也在nobody用户下运行,因此可能是其他原因无效。

感谢您的帮助。

1 个答案:

答案 0 :(得分:15)

要删除文件,您需要对该文件所在的目录具有写入权限。该文件的权限不重要。

那就是说,你已经有了一些相当糟糕的代码。你只需要运行rm(你可以直接运行而不需要通过shell)来进行炮轰(没有逃避任何东西,你好贝壳注入!),并且你正在捕捉它毫无理由地输出(并且你无视任何被捕获的东西)。此外,您还没有检查错误(这种形式也会更难)。

这比以前要复杂得多。 Perl有一个用于删除文件的内置函数:

unlink $shotfile or warn "$0: can't unlink $shotfile: $!\n";

这将删除文件或警告您有任何问题($!包含失败的原因)。如果您希望程序中止,请将warn更改为die