⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dirtree.pm

📁 JVT-Z203_jsvm.rar
💻 PM
字号:
#!/usr/bin/perl
###############################################################################
# Copyright 2006 -- Thomson R&D France Snc
#                   Technology - Corporate Research
###############################################################################
# File          : DirTree.pm
# Author        : jerome.vieron@thomson.net
# Creation date : 25 January 2006
# Version       : 1.0.0
################################################################################

package DirTree;

#-----------------------#
# System Packages       #
#-----------------------#
use strict;
use Cwd;
use File::Copy;
use File::Path; 
use IO::File;

#-----------------------#
# Functions             #
#-----------------------#
###############################################################################
# Function         : CheckDir($)                                                                             
###############################################################################
sub CheckDir($)
{
	my $simudir=shift;
	my $currentdir=getcwd();
	 
 	chdir $simudir or die "The directory $simudir doesn't exist! $!";	
 	my $currsimudir=getcwd();
	
	#for cygwin
	$currsimudir=~ s|^/cygdrive/(.)/|$1:/|;
	
	chdir $currentdir or die "Can not go back to root! $!";
		
	return "$currsimudir/";	
}


###############################################################################
# Function         : CreateDir ($)                                                                             
###############################################################################
sub CreateDir($)
{
  my $dir = shift;

  (-d $dir) and return;
 
  mkdir $dir or die "- Failed to create directory $dir : $!";
}

###############################################################################
# Function         : CreateDirTree ($)                                                                              
###############################################################################              
sub CreateDirTree($)
{
  my $simuname = shift;
  
 CreateDir($simuname);

  foreach (qw/orig cfg tmp str mot fgs rec crop/)
    {
      CreateDir("$simuname/$_");
    }
}

##############################################################################
# Function         : CopyDir ($;$)                                                                               
############################################################################### 
sub CopyDir ($;$)
{
     my $srcdir = shift;
     my $dstdir = shift;	

      opendir(DIR,$srcdir) or die "CopyDir : $srcdir doesn't exist $!";
      my @files = grep( $_ ne '.' && $_ ne '..', readdir(DIR));
      closedir DIR;
      
      CreateDir($dstdir);

      foreach (@files) 
      {
       if(-f "$srcdir/$_")
         {
          (-f "$dstdir/$_") and (unlink "$dstdir/$_" or die ""); #not clean
           copy("$srcdir/$_","$dstdir/$_") or die "Can not copy $srcdir/$_ to $dstdir/$_ $!";
         } 
         elsif(-d "$srcdir/$_") 
         {
          CopyDir ("$srcdir/$_","$dstdir/$_");
          }
      }
 }    
 
###############################################################################
# Function         : GetDir ($)                                                                         
############################################################################### 
sub GetDir ($)
{
     my $srcdir = shift;
    	
     opendir(DIR,$srcdir) or die "GetDir : $srcdir doesn't exist $!";
     my @dirlist = grep( $_ ne '.' && $_ ne '..' && (-d "$srcdir/$_"), readdir(DIR));
     closedir DIR;
      
     return @dirlist;
 }    

###############################################################################
# Function         : BuildSimuDir ($;$;$)                                                                             
###############################################################################
sub BuildSimuDir ($$;$)
{
	my $simuname = shift;
	my $param    = shift;	
	my $mode     = shift;
	my $dbdir    = $param->{path_database}."$simuname";
	my $simudir  = $param->{path_simu}."$simuname";
	
	DirTree::CleanSimuDir($simudir,$param,0) if($mode);
	
	DirTree::CreateDir($param->{path_simu});
	DirTree::CreateDirTree ($simudir);
	DirTree::CopyDir($dbdir,"$simudir");
}

###############################################################################
# Function         : CleanSimuDir ($;$;$)                                                                             
###############################################################################
sub CleanSimuDir ($$;$)
{
	my $simuname = shift;
	my $param    = shift;	
	my $mode     = shift;   	
	my $simudir  = $param->{path_simu}."$simuname";

	if($mode<1)
	{
	(-d $simudir)and (rmtree($simudir,0,1) or die "Can not remove ".$simudir." $!");
	}
}

1;
__END__



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -