如果你認為perl只是者的工具,現在就需要重新考慮了。他也能成為你嵌入式編程工具的一部分。
perl是從c, sed, awk和其他編程語言派生出來的高級解釋語言。它擅長文本處理,這就是在web網站內容處理中流行的原因。
但是作為軟件開發者,每天同樣要處理文本:源代碼,頭文件,makefiles,映射文件,批處理文件,便一起/連接器的錯誤信息,私有文件格式等等。
perl 可以作為一個復雜的查找和替換引擎,一個文本處理和提取工具,一個批處理文件的聚合體等等。它能夠把內部工具和你所需要的程序迅速地捆綁在一起來執行。
你也不需要成為一個perl 的專家。perl 相對易學而且基本掌握就能很多領域應付自如。當然了,如果你想深入淺出,還是有很多東西需要學的,但不是必需的。特別地,面向對象特性和眾多的perl 功能模塊是建立在你精熟的基礎之上的。
除了基本的語言構造,例如語句,控制分支,變量,數組,和哈希表,你需要熟練掌握正則表達式才能夠真正使用大多數功能強大的文本處理工具。
正則表達式相當于存儲在字符串中的最小”編程語言”。對于未知者,它就像一行咒語。但是不要被它所騙,正則表達式只不過是在一個小的空間里封裝了大量的字符產處理邏輯。
讓我們來看一下在嵌入式軟件開發中使用perl 的一些方法。
從數據表中剝離硬件定義
對于大型的半導體設備,從數據表中人工轉譯寄存器和未定義到軟件的頭文件需要花費很長的時間。如果文檔是pdf格式,將相關部分輸出成一個文本文件,然后用perl 腳本處理相關的硬件定義,這樣能夠節省上百行代碼的人工輸入,而且遠比人工轉錄更加可靠。
從c頭文件的#define中生成匯編程序中的等同文件
使用perl 腳本可以將c頭文件定義自動轉化為匯編代碼中的等同文件。
從私有工具中處理文本輸出
許多嵌入式工具都產生專有的文本格式,你需要把它們轉化為目標系統的其他格式。perl是處理這種事情的出色工具。.
數據表格計算
使用perl 豐富的算術模塊,可以迅捷的查找計算源代碼中的表格。
管理項目時的統計分析
當管理一個大型項目時,代碼的統計信息對項目的進度非常有用。這些有用的信息包括代碼行數,注釋的比例,rom的使用數量等。使用perl 可以自動獲得這些信息,并加入一個文本數據庫形成項目歷史。
分析連接器映射文件
perl 能夠讀取由linker 生成的映射文件,并且排序,過濾,得到目標內存使用信息使其結果更優化。
將二進制文件轉化為數據表
盡管perl 擅長于文本處理,他也能夠控制原始的二進制數據。使用這一特性,可以將二進制文件轉化為表格或結構并嵌入到你的源代碼中。
代碼移植
在進來的一個項目期間,我需要以致大量的現存代碼到一個新的嵌入式平臺。目標設備缺乏很多系統函數,目標代碼不能生成,連接器報告了上千個“未知函數”的錯誤信息。我企圖重寫代碼,至少能夠編譯和連接成功,這需要相當的時間。
perl 的解決方案:一個簡單的perl 腳本從錯誤信息文件中提取到所缺少函數的名稱,并且從數十個頭文件中找到這些函數的定義原型。然后在c文件中創建這些函數的假版本。一兩個小時搞定,移植的代碼連接到新設備中,缺少的函數已經被補充,而perl 腳本只用了區區38行代碼且節省了大量的時間。
這只是個小例子。 perl 的實用只是受到你思維的限制。你可以把perl 放到你的軟件開發工具箱中去嘗試。
注冊會員,創建你的web開發資料庫,新聞熱點
疑難解答