文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>perl 学习 一个简单的数据

perl 学习 一个简单的数据

时间:2007-01-11  来源:roywangt

   写了一个数据“备份”脚本,实现一个数据转移的功能,将文件按照月份/业务(可以分多级)/天进行数据存放,目前是按照每天处理一次的方式进行的。目标是按照文件生成时间进行数据分成分业务进行存放。    代码如下 :使用了perl一些简单的特性。觉得是我第一次写的比较好的perl程序。自我感觉而已了。   #!/usr/bin/perl
#use Time::localtime;
#####################       SUB     ##########################
sub backupdata{
 my @tmpPath = @_;
 my $dayPath = $tmpPath[2];
 print $tmpPath[0] , $tmpPath[1] ,"\n" ;
 opendir dire ,  $tmpPath[0] or die "opendir is error \n";
 while ( defined ($filename = readdir(dire)) ) {
  next if $filename eq "." ;
  next if $filename eq ".." ;
  next if -d $tmpPath[0].$filename ;
  if ($tmpPath[3] eq "1") {
  system "mv", $tmpPath[0].$filename , $tmpPath[1].$filename  ;
   print "1=".$tmpPath[0].$filename."==".$tmpPath[1].$filename."\n";
   next ;
  }
  if ($tmpPath[3] eq "2") {
   mkdir $tmpPath[1].$dayPath,0755  if !-e $tmpPath[1].$dayPath ;
   print "2=".$tmpPath[0].$filename."==".$tmpPath[1].$dayPath."/".$filename."\n";
   system "mv", $tmpPath[0].$filename , $tmpPath[1].$dayPath."/".$filename ;
   next ;
  }
 }
 closedir(dire);
}
sub buildPath{
 my @Paths = split /\//,$_[1];
 chdir $_[0] ;
 foreach  $Path(@Paths) {
  mkdir $Path,0755 if  !-e $Path ;
  chdir $Path ;
 }
}
#####################       ENV     ##########################
%BusiPath = (
 "recv/17901" =>"1", "recv/4008" =>"1", "recv/DddSta" =>"2",  "recv/SmsSta" =>"2",
 "recv/hyt" =>"1",  "recv/nv" =>"1", "recv/QCFromProv" =>"1", "recv/iep"  =>"1",
 "recv/infodata" =>"1", "recv/ngn"  =>"1","recv/other" =>"1", "recv/smc"  =>"1",
 "recv/SettleSta" =>"2", "recv/hkrx"  =>"1","recv/ipass" =>"1", "recv/ptm"=>"1",
 "recv/datum/radius" =>"1","recv/datum/vpdn" =>"1", "recv/datum/card"  =>"1", "recv/in/smp"=>"1",
 "send/17901"  =>"1", "send/4008" => "1", "send/hyt" => "1" ,
 "send/iep"  =>"1", "send/in"  =>"1", "send/ngn"  =>"1", "send/nv"  =>"1", "send/sms"  =>"1" 
 );
my $DesPath ;
my $workPath ;
my $SubPath =` date +"%Y%m" `;
my $DayPath =` date +"%Y%m%d" `;
chomp $SubPath; chomp $DayPath ;
my $MainPath = "/appdatabak/";
my $SourceMainPath = "/jsdata/settle/data/province/appdatabak/";
my $tm = localtime;
#####################       WORK      ##########################
mkdir $MainPath.$SubPath,0755  if  !-e $MainPath.$SubPath ; #check subPath
foreach $key(keys%BusiPath) {
 buildPath($MainPath.$SubPath , $key);
 $DesPath = $MainPath.$SubPath."/".$key."/";
 print "DES=".$DesPath."\n";
 backupdata($SourceMainPath.$key."/" , $DesPath, $DayPath,$BusiPath{$key} );
}
  修改了以前的错误。在不同的unix、perl版本上,mkdir 有一定的差异。
相关阅读 更多 +
排行榜 更多 +
我要当超人

我要当超人

休闲益智 下载
幸存者的命运

幸存者的命运

飞行射击 下载
精英战区3d

精英战区3d

飞行射击 下载