【Perl】- 轉換Pattern | 轉換文字檔時,常用的一些指令

 

以下針對Perl在做Pattern轉換時常用的一些指令做記錄,方便日後查詢。


開啟檔案 - 讀/寫

open (READ_HEX," < 5a13n01.hex") or die "Can't open 5a13n01.hex";

close(READ_HEX);

開啟檔案 - 寫

open (SAVE_SCAN_PAT," > SCAN.PAT") or die "Can't open SCAN.PAT";

close(SAVE_SCAN_PAT);

處理開啟的檔案

while(<READ_HEX>)
{

}


抓取同一目錄下,所有相同副檔名的檔案

$K =0;
@CMA_NAME;
while(<*.pat>)
{
 $CMA_NAME[$K] = $_;
 #print "$K.$_\n";    
 $K=$K+1;
}


字串取代

s/\s//g;       #   g 代表此字串的所有位置全部執行取代

字串分割

@HEX_LINE = split/>/,$_       #     


邏輯判斷 - if/else /elsif

if ($HEX_VEC[$K] eq 0)

{

$SCAN_PIN_4[$G] = L;  

$SCAN_PIN_3[$G] = L;  

$SCAN_PIN_2[$G] = L;  

$SCAN_PIN_1[$G] = L;

}       #     

############################################

if (-d $TRANS_FOLDER )
{
     #print "$TRANS_FOLDER Exist\n";
}
else
{
     mkdir $TRILLIUM_PAT_FOLDER;
}

############################################

 if ($pat_type eq "A" || $pat_type eq "a") {       #modified - March 3, '05
      $valid_entry = 1;
      $mode = Dpm;
      $max_rpts = 2047;
      }
  elsif ($pat_type eq "B" || $pat_type eq "b") {    #modified - March 3, '05
      $valid_entry = 1;
      $mode = Cpm;
      $max_rpts = 65536;
      }
  else { 
      print "\n\n\tInvalid entry, please select either A/a or B/b:   ";     #modified - March 3, '05
      }

邏輯判斷 - for

for($K=0;$K<32;$K++)
{

   #填入需要執行的程式碼

}


邏輯判斷 - and

&&

邏輯判斷 - or

||

 


副程式 - subroutin 

sub PATTERN_END()
{

   open (READ_PAT_END," < PATTERN_END.txt") or die "Can't open  PATTERN_END.txt";
   while(<READ_PAT_END>)
   {
       print SAVE_SCAN_PAT $_;       
       
   }   
   close(READ_PAT_END)

}

 

如何呼叫並在主程式中使用?直接將副程式的名稱貼上即可。

PATTERN_END()


檔案檢查 - 是否存在

if (-e "CORRECT.txt" ) { print 123;  system("del CORRECT.txt")}
if (-e "ERROR.txt")   { print 456;  system("del ERROR.txt")}

目錄檢查 - 是否存在

$TRILLIUM_PAT_FOLDER = "TRILLIUM_PAT";
if (-d $TRANS_FOLDER )
{
     #print "$TRANS_FOLDER Exist\n";
}
else
{
     mkdir $TRILLIUM_PAT_FOLDER;
}

######################################################

if ( -d  $NEW_PAT_FOLDER )
{
    print "Already had a NEW_PAT exist\n";
}
else
{

     mkdir $NEW_PAT_FOLDER,0777; #For UNIS system
     print "Creat a NEW_PAT Floder\n";
}


命令列參數 - $ARGV[]

perl   my.pl $ARGV[0]  $ARGV[1]     #執行方法

#程式碼應用如下,0/1/2/3... 代表命令列上的第幾個參數。編號從零開始

open(ONE,"$ARGV[0]") or die $!;
open(TWO,"$ARGV[1]") or die $!;

#如果一直抓不到值時,先確認path 是否有設定正確。


移除換行符號 - chomp

 chomp($_);
 $pattern[$i] = $_;

列印 - print/printf

print     SAVE_LOG "other timing set be found in $AVF.pat, please check it!!\n";
printf    OUTFILE "%-10s %-15s %-30s %s \n",$LABEL,$MIRCO_INSTRUCTION,$REMARK,$VECTOR;

鍵盤輸入 - STDIN

$AVF = <STDIN>;    #由鍵盤輸入

迴圈 - foreach

foreach(@PAT_NAME)

}


時間處理 

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);


arrow
arrow
    文章標籤
    PERL
    全站熱搜

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