工作中的線上環(huán)境有很多的perl命令行的類似一句話的命令,今天總結(jié)下perl的命令行編程的一些東西。
-e 后面緊跟著引號里面的字符串是要執(zhí)行的命令:
代碼如下:
king@king:~$ perl -e ‘print “hello world /n”‘
hello world
如果是多個命令就可以使用多個-e,這里是不是想到了sed呢?但是要注意的是中間的哪個“;”.
代碼如下:
king@king:~$ perl -e ‘print “hello world /n” ;' -e ‘print “my first perl command line script /n”‘
hello world
my first perl command line script
-M 導(dǎo)入要使用的模塊:
代碼如下:
king@king:~$ perl -MLWP::Simple -e'print head “http://www.chinacache.com”,”/n”‘
text/html; charset=utf-81337525116978307200Apache/2.2.3 (CentOS)
另外-M可以判斷某個模塊是不是已經(jīng)安裝了
-m 的功能和-M類似,區(qū)別在于-M 模塊名等同于use 模塊名,這樣會把一些默認(rèn)的函數(shù)或者其它東西引進(jìn)過來,-m 模塊名 則會關(guān)閉這些默認(rèn)值,這樣可以引入一些你只使用的函數(shù);例如上面的例子:
換成-m的話就不會有任何輸出;-m 和 -M 通過 = 來引入某個模塊的特別函數(shù).
代碼如下:
perl -MCGI='header,start_html' -e ‘print header, start_html'
-w 等同于use warnings
-n -p 都會使用 <> 將所有 @ARGV 參數(shù)當(dāng)作文件來逐行運(yùn)行(有循環(huán)的意思哦,經(jīng)常和其它參數(shù)一起處理文件),會將讀入的內(nèi)容隱式的逐一按行來遍歷文件.每一行將缺省保存在 $_;但-p 會將內(nèi)容“重復(fù)”打印出來,而-n更傾向與打印滿足某種條件的行(這這里還有一些有用的變量比如$. 表示當(dāng)前行的行數(shù)):
代碼如下:
king@king:~$ cat file.txt
A 1
B 2
C 3
king@king:~$ perl -p -e ‘print ‘ file.txt
A 1
A 1
B 2
B 2
C 3
C 3
king@king:~$ perl -n -e ‘print ‘ file.txt
A 1
B 2
C 3
看到這里是不是想到了sed的-n 的特性:
代碼如下:
king@king:~$ sed -ne ‘p' file.txt
A 1
B 2
C 3
king@king:~$ sed -e ‘p' file.txt
A 1
A 1
B 2
B 2
C 3
C 3
-i 將修改直接的寫入文件,這個和sed也是一樣的哦;
代碼如下:
king@king:~$ cat file.txt
A 1
B 2
C 3
king@king:~$ perl -pi -e ‘s/A/a/' file.txt
king@king:~$ cat file.txt
a 1
B 2
C 3
-a 打開自動分離 (split) 模式. 空格是缺省的分離號. 輸入根據(jù)分離號被分離然后放入缺省數(shù)組 @F.
代碼如下:
king@king:~$ perl -na -e ‘print $F[1],”/n”‘ file.txt
1
2
3
和awk是不是很像?還有更像的,那就是-F,和awk一樣更改字段之間的分割符,默認(rèn)是空格和tab;
代碼如下:
新聞熱點
疑難解答
圖片精選