好久沒碰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";
open(FHD, "$fname") || die "$!\n"; # 開檔 my $i=0; $replace_title=~ s/T/C/ig; $replace_title=~ s/B/E/ig; } print FHD2 "$replace_title"; close(FHD);# 關檔 print "檔案處理成功!End!\n";
foreach my $fname (@files) { #每一個檔案,包含上層目錄
$filename=substr( $fname, index($fname,"/")+1 , rindex($fname,".")-4);
#print "$filename\n";
open(FHD2, "> $process_name/$filename".".txt") || die "$!\n"; # 開啟檔案、增添資料
print FHD2 ">$filename\n";
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/S/C/ig;
last if ($i > 2); # 跳出迴圈
}
close(FHD2);
}
sleep 100;
留言列表