Perl應(yīng)用1:文件最后一行的特殊處理

應(yīng)用背景

在用perl語言生成文件時(shí),有時(shí)會碰到需要對文件的最后一行進(jìn)行特殊處理,這個(gè)時(shí)候可以利用perl語言中的seek()函數(shù)和tell()函數(shù)配合來完成。

實(shí)例應(yīng)用

問題描述

下面是用verilog語言描述的信號連線信息,其中1-4行都是以逗號結(jié)尾,只有最后一行是以右括號+分號結(jié)尾。如何用perl腳本自動(dòng)實(shí)現(xiàn)該效果呢?

  1 .i_signalA(c_signalA),
  2 .i_signalB(c_signalB),
  3 .i_signalC(c_signalC),
  4 .i_signalD(c_signalD),
  5 .i_signalE(c_signalE));
解決方案
  1. 首先使用perl語言的print函數(shù)生成格式統(tǒng)一的代碼,
print($FH,"\.i_$1\(c_$1),\n");

其中,$1是用perl正則表達(dá)式捕獲的信號名,對應(yīng)圖1中的signalA,signalB,...
打印的信息如下圖所示:

  1 .i_signalA(c_signalA),
  2 .i_signalB(c_signalB),
  3 .i_signalC(c_signalC),
  4 .i_signalD(c_signalD),
  5 .i_signalE(c_signalE),

2.此時(shí)文件句柄$FH位置指向第5行的逗號后面的換行符\n下一個(gè)字符,可以用tell函數(shù)獲取此位置:

$pos=tell($FH);
  1. 將文件句柄的位置重新指向第5行的逗號,然后重新輸出右括號分號、換行符(\n)
$new_pos=$pos - 2;#    文件句柄左移兩個(gè)字節(jié)
seek($FH,$new_pos,0);
print($FH,"\);\n");

經(jīng)過上面三個(gè)步驟,就可以實(shí)現(xiàn)用腳本自動(dòng)對最后一行進(jìn)行處理的功能^_^

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容