好久沒碰Perl了,
都快忘了基本語法,
順便複習Perl給我的震撼囉...

#!/usr/bin/perl -w
use strict;
=head1 [以下註解]
作用:把目錄下符合檔名資料取出前三行作批次替換處理。
程式:kinom (kinomelma@yahoo.com.tw)
日期:2008/01/05
=cut [以上註解]
my $dir="all/"; # all檔案目錄(預設:all/)
my $last_name=".all"; # 處理副檔名(預設:.all)
my $process_name="process/"; #處理後存放目錄(預設:process/)

if (! -e $process_name) {   # 判斷檔案是否存在
 mkdir($process_name, 0755) || die "$!"; #建立新目錄
 print "建立'$process_name'目錄!\n";
}else{
 #該檔案存在
}

my @files = <all/*.all>;
my $filename;   #如:/all/t123.txt變成t123

print "開始處理'$dir'目錄下檔案\n";


foreach my $fname (@files) { #每一個檔案,包含上層目錄
 $filename=substr( $fname, index($fname,"/")+1 , rindex($fname,".")-4);
 #print "$filename\n";

 open(FHD, "$fname") || die "$!\n";  # 開檔

 
 open(FHD2, "> $process_name/$filename".".txt") || die "$!\n"; # 開啟檔案、增添資料
 print FHD2 ">$filename\n";

 my $i=0;
 my $replace_title;
 while(my $line=<FHD>){
  $i++;
  
  #《RES:T,P,A,F,N,》變成《T,P,A,F,N,》
  $replace_title=substr($line,index($line,":")+1);
  # 取消逗點
  $replace_title=~ s/,//ig;
  
  if ($i==2){
   $replace_title=~ s/I/H/ig;
   $replace_title=~ s/G/H/ig;

   $replace_title=~ s/T/C/ig;
   $replace_title=~ s/S/C/ig;

   $replace_title=~ s/B/E/ig;

  }

  print FHD2 "$replace_title";
  last if ($i > 2); # 跳出迴圈
 }
 close(FHD2);

 close(FHD);# 關檔
}

print "檔案處理成功!End!\n";


sleep 100;

arrow
arrow
    全站熱搜

    kinomelma 發表在 痞客邦 留言(0) 人氣()