我正在尝试使用我的perl脚本删除文件和文件夹。我正在使用"rm -rf $file"命令删除文件,但它没有做任何事情。但是,当我在cmd行上尝试相同的命令时,它可以正常工作并删除文件。附上代码片段。任何帮助,不胜感激。
for each $f (@files)
{
system "rm -rf $f";
}
我在几台机器上尝试了这个,这是同样的问题。但是,我尝试使用其他系统命令,例如 mkdir、tar 等,它工作得很好。我也尝试取消链接,但同样的问题仍然存在。
for
或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.txt
和c.txt
,所以我保证它是工作代码。
使用 perl 调试器检查@files,并检查您尝试删除的所有文件的权限。
use File::Path;
rmtree('folder_path'); #rmtree('/tmp/test');
如果@files
数组中只有文件而不是文件夹,那么您也可以使用 unlink
命令删除文件。这可能比使用 rm -rf
更安全。如果元素/
以某种方式进入您的数组,那么您最终可能会得到一个带有rm -rf
的损坏的 Linux。在perldoc上取消链接。
unlink @files;