原代码如下:
#!/usr/bin/perl
use File::Path ;
$\="\n";
my $cfg="clr.cfg";
open (mycfg,$cfg) or die "open $cfg error![$!]";
while(<mycfg>)
{
chomp;
&chk_file();
}
close(mycfg);
sub chk_file
{
$_=$ENV{"HOME"}.$_;
if (-f )
{
&unlink_file();
}
if (-d )
{
&unlink_path();
}
return 0;
}
sub unlink_path
{
chomp;
my $path=$_;
chdir $path or die "chdir error![$!]";
opendir(myfile,$path) or die "find $path error![$!]";
foreach (readdir myfile)
{
next if $_ eq "." or $_ eq "..";
rmtree($_) if -d;
unlink ;
}
closedir(myfile);
rmdir $path;
mkdir $path;
return 0;
}
sub unlink_file
{
unlink or die "remove $_ error![$!]";
return 0;
}
config文件如下:
/tmp/
执行结果是:
家目录下所有文件文件夹全部被删除!
包括脚本本身,所以好像原脚本不是这样的...
o(︶︿︶)o 唉。。。堪比电锯惊魂啊,关键是在公司的开发机上执行的,大家半年的心血就没了,程序倒是有备份,但是有的头文件什么的,全部丢失。
记下这次教训,提醒自己,还太年轻,做事不谨慎,平时也没做好备份工作,这是对自己和其他同事的不负责任。
备注:自己配置cfg文件时其实也主意到了哪行空行,但是完全没有想到它带来的结果,还抱着试试看的心态,想看看程序遇到空行会怎么办....程序太不严谨了。记下此事件,警钟长命。