首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > 其他编程语言 > perl 学习 一个简单的数据
【标  题】:perl 学习 一个简单的数据
【关键字】:perl
【来  源】:http://www.cublog.cn/u/22231/showart.php?id=230437

perl 学习 一个简单的数据

   写了一个数据“备份”脚本,实现一个数据转移的功能,将文件按照月份/业务(可以分多级)/天进行数据存放,目前是按照每天处理一次的方式进行的。目标是按照文件生成时间进行数据分成分业务进行存放。
   代码如下 :使用了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 $filename ;
  if ($tmpPath[3] eq "1") {
   rename $tmpPath[0].$filename , $tmpPath[1].$filename  or die "rename is error \n";
   next ;
  }
  if ($tmpPath[3] eq "2") {
   mkdir $Path if  !-e $tmpPath[1].$dayPath ;
   rename $tmpPath[0].$filename , $tmpPath[1].$dayPath."/".$filename  or die "rename is error \n";
   next ;
  }
 }
 closedir(dire);
}
sub buildPath{
 my @Paths = split /\//,$_[1];
 chdir $_[0] ;
 foreach  $Path(@Paths) {
  print $Path , "\n";
  mkdir $Path if  !-e $Path ;
  chdir $Path ;
 }
}
#####################       ENV     ##########################
$MainPath = "/appdatabak/";
$SourceMainPath = "/jsdata/settle/province/appdatabak/";
%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", "vdatum/card"  => "1", "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 $MainPath ;
my $SubPath = sprintf "%4d%02d",$tm->year +1900,$tm->mon +1 ;
my $DayPath =  sprintf "%4d%02d%02d",$tm->year +1900,$tm->mon +1,$tm->mday ;
my $DesPath ;
my $workPath ;
my $SourcePath ;
my $tm = localtime;
#####################       WORK      ##########################
mkdir $MainPath.$SubPath  if  !-e $MainPath.$SubPath ; #check subPath
foreach $key(%BusiPath) {
 buildPath($MainPath.$SubPath , $key);
 $DesPath = $MainPath.$SubPath."/".$key."/";
 backupdata($SourcePath , $DesPath, $DayPath,$BusiPath{$key} );
}
Eclipse使用StrutsIDE开发struts:【上一篇】
获取汉字unicode编码的Perl程序:【下一篇】
【相关文章】
  • 学习Perl闭包几点心得
  • 关于perl的污染检测
  • perl学习笔记 (1)perl常识
  • 错误是String literal is not properly closed by a double-quote
  • [UNIX编程]perl语言初接触
  • perl 学习笔记
  • Catalyst 介绍-perlchina
  • Perl的学习笔记
  • Perl与Java的SSL通信示例
  • Perl DBD-MySQL模块安装&PDFLIB安装
  • 【随机文章】
  • 最新溢出Windows Explorer URL File format overflow
  • 《JAVA2核心技术 卷一 基础知识(原书第七版)》《Core java2,Volume I-Fondamentsls Seven Edition》 学习...
  • 软件架构:可控的灵活性
  • 状态模式(State Pattern)
  • eBook Workshop v1.4(1)
  • 请教sizeof()里面的值?
  • 我学boost(2) array
  • 实现支持断点续传多线程下载的 Http Web 客户端工具类
  • 通信系统概述 8-1
  • Sidebar Gadget开发教程(4)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.