來公司的第二個星期便看了一下perl語言,發現掌握一門指令碼語言還是非常有用的。到現在為止已經入職兩個月,用perl指令碼做了這些活:
1. 修改了公司的乙個爬取網頁源**的指令碼
2. 改進了乙個出特徵庫的指令碼,根據svn status的狀態,來優化,將只需要新增的db的資料進行處理。
3. 編寫了乙個指令碼,用於比對兩個資料夾的檔案(檔案數量大約在+),之後選擇需要處理的檔案。用perl強大的正則匹配獲取對應的字段,並將資料全部放入到excel當中。其中有部分字段需要進行英中文對應,此時建立了兩個資料夾進行存放對應的中英文本段,讓指令碼讀取兩個檔案來進行正確匹配,這樣易於後期的維護。此外,由於資料夾的路徑可能會發生更改,又用乙個bash指令碼來連線幾個perl指令碼,並將常用的引數直接寫入到bash指令碼中,這樣亦可能對應單獨使用perl,又可能在不更改引數的情況下,使用bash指令碼快速執行指令碼功能。後續會將**貼上來做個分享。
以下為剛開始看perl語言入門的一些基礎小筆記,之後在改寫指令碼和自己編寫指令碼的時候也積累了一些東西,並沒有記錄進去,以後應該會做整理補充進去。因為這是最開始的記錄,可能會顯得非常基礎的東西。
# 為注釋
#! 則表示執行下面檔案的程式
反引號 `......` 表示執行外部程式
下劃線可以用來分割資料,並不會改變原資料
如 98908008080 為了方便閱讀,可以寫成
98_908_008_080
perl 中的null沒有特殊含義
單引號字串內,除了單引號或者反斜槓之外的字元都表示自身
雙引號字串內,反斜槓可以用來表示控制字元
用 . 能夠連線字串
x可以表示字串重複操作符
perl -w my_program
的 -w 引數可以在執行的時候看到警告
-x 可以忽略所有警告
在perl程式內加上
use diagnostics; 將可以看到更詳細得警告說明
命令列加上 -m 引數能決定是否啟用diagnostics
$變數名
{} 分隔符, 可以用於分隔字串
數字 0 為 false
字串 空串 為 false
undef 為 false
比較特殊的是, 字串 '0' 也為false
可用於標準輸入流
如 $line=;
chomp() 可以用來去掉換行符 (很常用)
結合使用: chomp($line=) 讀入且不包含換行符
defined 函式可以用來判斷是否為undef
$define ($text) text為undef時返回false,否則返回true
perl 陣列沒有長度限制,未賦值的陣列元素值為undef
$#array 表示array陣列最後乙個元素得索引
array[-1] 表示最後乙個陣列元素
@array 表示 all of the array 即可以對所有元素進行整體操作
@array = (1 .. 5) 將1,2,3,4,5賦值給array 賦值是括號可以不加
@array = qw (qwe wer ert rty); 將字串"qwe", "wer", "ert", "rty"賦值給array
qw可以允許使用任何標點符號作為分界符
push/pop (陣列從尾部壓棧出棧), shift/unshift (從開頭壓棧出棧)
foreach $rocks (@rocks) 可以遍歷陣列
$_ 可以代表 foreach 迴圈中省略的控制變數
1 foreach (1 .. 10)
reverse 逆轉, sort 排序
@lines = ;
ctrl+d來表明輸入結束 (unix) ctrl+z (windows)
@_ 是程式得私有變數
使用my可以在子程式裡建立私有變數
程式開頭加上 use strict; 將會使程式檢查更加嚴謹
$! 表示系統會提供一些有用的可讀資訊, 比如在開啟檔案失敗得時候
@array = split (//, $string); 函式可以將字串拆分,//內表示按空格來拆分,/\./表示按小數點拆分。
@argv 表示命令行的引數列表
=~ 表示匹配繫結,成功返回true。$& 表示成功匹配的值 $` 表示匹配前 $' 表示匹配後
=~ s/正則/替換內容/g 可以用這種方式將所有匹配的字段全部替換
第一篇部落格,就先這樣,之後應該還會將工作中和學習中積累的點點滴滴都寫進去,多總結,多積累。
Python指令碼語言學習
每天都應該有新的進步!感覺現在只掌握c語言,在漏洞分析研究中,不夠用。所以還是需要學習一門程式語言,以備不時之需。python的安裝和環境變數設定 在環境變數中新增python目錄 在命令提示框中 cmd 輸入 path path c python 按下 enter 注意 c python 是pyt...
TCL指令碼語言學習
語言簡介 tcl是一種很通用的指令碼語言,它幾乎在所有的平台上都可以解釋執行,功能強大。是tool command language的縮寫,發音為 tickle 實際上包含了兩個部分 乙個語言和乙個庫。首先,tcl是一種簡單的指令碼語言,主要使用於發布命令給一 些互交程式如文字編輯器 偵錯程式和sh...
TCL指令碼語言學習
語言簡介 tcl是一種很通用的指令碼語言,它幾乎在所有的平台上都可以解釋執行,功能強大。是tool command language的縮寫,發音為 tickle 實際上包含了兩個部分 乙個語言和乙個庫。首先,tcl是一種簡單的指令碼語言,主要使用於發布命令給一 些互交程式如文字編輯器 偵錯程式和sh...