-2

我正在尝试使用我的 perl 脚本删除文件和文件夹。我正在使用“rm -rf $file”命令来删除文件,但它什么也没做。但是,当我在 cmd 行上尝试相同的命令时,它可以正常工作并删除文件。附上代码片段。任何帮助表示赞赏。

for each $f (@files)
{
       system "rm -rf $f";
}

我在几台机器上试过这个,同样的问题。但是,我尝试使用其他系统命令,例如 mkdir、tar 等,它工作得很好。我也尝试过取消链接,但同样的问题仍然存在。

4

3 回答 3

4

您可以使用foror foreach,但没有for each。我已经运行了代码,一旦我修复了这个,文件就被删除了。

使用use strict;会发现这一点,因为“每个”都会显示为一个空词。

这是我使用的代码:

#!/usr/bin/perl

use warnings;
use strict;

my @files = qw( a.txt b.txt c.txt );

for my $f (@files)
{
   system "rm -rf $f";
}

这成功删除了a.txt,b.txtc.txt,所以我保证它是工作代码。

使用 perl 调试器检查 @files,并检查您尝试删除的所有文件的权限。

于 2012-04-19T03:08:54.113 回答
2
use File::Path;
rmtree('folder_path');  #rmtree('/tmp/test');
于 2013-05-30T09:07:13.063 回答
0

如果您的@files阵列中只有文件而不是文件夹,那么您也可以使用unlink删除文件的命令。这可能比使用rm -rf. 如果该元素/以某种方式进入您的阵列,那么您最终可能会遇到带有rm -rf. 在 perldoc 上取消链接

unlink @files;
于 2012-04-19T08:42:45.183 回答