Perl“unlink”函数usge与“glob”

时间:2013-03-18 07:48:22

标签: perl

我想用" 1.1.1.1"删除文件/tmp文件夹中的IP地址:

# ls -1 /tmp
1.1.1.1_Reboot.xml
1.1.1.1_Roll.xml
1.1.1.1_Setup.xml
1.1.1.2_Reboot.xml
1.1.1.2_Roll.xml
1.1.1.2_Setup.xml

我指的是:unlinkglob

这是我的代码:

#!/usr/bin/perl -w
use strict;

my $DIR     = "/tmp";
my $IP      = '1.1.1.1';

unlink glob $DIR."/".$IP."*";

但是,它不是删除文件。我怀疑是glob函数,我想我没有以正确的方式使用它。

你可以帮忙吗? 感谢。

更新

如果我用ip地址本身替换$IP,那么它就是删除文件。

unlink glob $DIR."/"."1.1.1.1"."*";

因此,看起来unlink语句无法评估变量$IP的值。我不知道为什么这样做。我需要使用$IP而不是它的显式值。

1 个答案:

答案 0 :(得分:0)

它可能与路径有关。打印错误以获取更多信息。试试这个:

#!/usr/bin/perl -w
use strict;

my $DIR     = "/tmp";
my $IP      = '1.1.1.1';

chdir $DIR;
my @goners  = glob $IP . "*";

foreach my $file ( @goners ) {
   print "file: $file\n";
   next unless $file =~ m!^1\.1\.1\.\d_!;
   print "file to delete: $file\n";
   unlink $file or warn "Could not unlink $file: $!";
}