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