当你在目录下进行一系列操作时,若要创建许多文件或者修改文件,可能会遇到许多麻烦的事。所以呢,新建一个文件夹,然后在这个文件夹下新建文件或者修改文件。假设,你的代码要在一个目录下新建一个文件夹,名为TmpFolder,然后,在文件夹下进行一系列操作。但是,目录下可能之前就会出现TmpFolder,这样一搞,会出问题的。该怎么解决呢,有以下2个:

(1)若是遇到有文件夹的名字是TmpFolder,就不要这个文件夹名字了,直接用TmpFolder2,不就是2了点嘛;但是,要是文件夹

TmpFolder和TmpFolder2都存在呢,就直接用TmpFolder3把,这样一直优雅地迭代下去直到老。(像微软处理同名文件一样)

(2)当然,要是你硬要用TmpFolder,就是任性,这也不是没有办法。如果目录下存在TmpFolder,就把文件夹TmpFoler命名为一个在当前不会重复的文件名,然后再新建文件夹TmpFolder,在一系列操作后,再把文件夹名改过来就得了。那么,问题来了,这个在当前不会重复的文件名该怎么写?在perl里,$$是指perl解释器的进程id,这个id在当前是唯一的。所以呢,就可以如下这样写,

my $tmpfile = 'TmpFolder';
my $chgfile = 'TmpFolder'. $$;

if(-d $tmpfile){
        rename($tmpfile, $chgfile); # 如果有重名文件夹,就改名为指定名称
        mkdir $tmpfile;		# 然后新建临时文件夹
        print "helo";		# 
        rmdir $tmpfile;		# 删除临时文件夹
        rename($chgfile, $tmpfile);	# 恢复原状
}else{
        mkdir $tmpfile ;		# 要是没有重名,就没什么问题了
        print "yay";
        rmdir $tmpfile;
}






版权声明:本文为博主原创文章,未经博主允许不得转载。

 posted on 2015-03-05 23:08  Rex7  阅读(447)  评论(0编辑  收藏  举报