亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Perl > 正文

Perl命令行應用程序詳解

2020-10-31 15:05:03
字體:
來源:轉載
供稿:網友

perl - Practical Extraction and Report Language,Perl有很多命令行參數,通過它可以讓你的程序更簡練,并且可以寫出很多只有一行命令的perl。在這篇文章里我們來了解一些常用的命令行參數。

命令行調用

復制代碼 代碼如下:

perl [ -sTtuUWX ]
[ -hv ] [ -V[:configvar] ]
[ -cw ] [ -d[t][:debugger] ] [ -D[number/list] ]
[ -pna ] [ -Fpattern ] [ -l[octal] ] [ -0[octal/hexadecimal] ]
[ -Idir ] [ -m[-]module ] [ -M[-]'module...' ] [ -f ]
[ -C [number/list] ]
[ -P ]
[ -S ]
[ -x[dir] ]
[ -i[extension] ]
[ [-e|-E] 'command' ] [ -- ] [ programfile ] [ argument ]...

[開關項描述]

-0

規定記錄分隔符。

-0<數字>

(用8進制表示)指定記錄分隔符($/變量),默認為換行

-00

段落模式,即以連續換行為分隔符

-0777

禁用分隔符,即將整個文件作為一個記錄

-a

與 -n 或者 -p 一起使用,負責打開自動拆分模式,用于對空白字符進行隱式拆分,用空格分隔$_并保存到@F中,相當于@F=split ''。分隔符可以使用-F參數指定例如:

復制代碼 代碼如下:

date | perl -ane 'print "$F[0]/n"';

-c

只檢查 Perl 腳本語法,而不執行腳本。

-d

對腳本打開 Perl調試器。

-D

設置 Perl 的調試標記(請先檢查 Perl 的安裝情況,確保已經安裝了調試器),若要觀察 Perl 是如何執行腳本的,可使用 -D14。

-e command

用于再命令行而不是在腳本中執行 Perl 命令。

-F pattern

規定拆分輸入行時使用的模式。模式是位于斜杠、單引號或雙引號之間的正則表達式。例如,-F/:+/ 表示在一個或多個冒號上拆分輸入行,如果 -a 仍然起作用的話,則打開它。

-h

打印 Perl 的命令選項列表。

-i extension

在使用 <> 循環遍歷文件時啟用原位編輯模式。 如果沒有規定擴展名的話,則原位修改各行內容,否則使用擴展名來修改輸入文件名(以便充當備份文件),并使用原位編輯的原文件名創建輸出文件。 這也是所有 print 語句選擇的文件句柄。

-I directory
與 -P選項一起使用,負責告訴 C 預處理程序查找包含的文件,其默認目錄包括 /usr/included、/usr/lib/perl 以及當前目錄。

-1 digits
啟用自動行結束處理。如果使用了 -n 或者 -p 選項,則去掉終止符。把位數(八進制) 賦值給 $/ ,并將行終止符添加到 print 語句中。如果沒有規定位數的話,則將 $/ 設置為 $/ 的當前值。

-l
對輸入內容自動chomp,對輸出內容自動添加換行。使用 -l 有兩個效果,第一自動 chomp 輸入分隔號,第二 把$/ 值付給 $/ (這樣 print 的時候就會自動在末尾加 /n)

復制代碼 代碼如下:

-m [-] module
-M [-] module
-M [-] module'
-[mM] module =
arg [,arg]..
-m module

在執行 Perl 腳本之前執行 use 方法。

-M module
再執行 Perl 腳本之前執行 use 方法。如果添加附加的文本,則可使用引號。方括號中的短橫線表示把 use 指令替換為 no。

-n
使 Perl 隱式地循環遍歷指定的文件,并只打印規定的行。自動循環,相當于 while(<>) { 腳本; }

-p
使 Perl 隱式地循環遍歷指定的文件,同時打印所有的行。自動循環+自動輸出,相當于 while(<>) { 腳本; print; }

-P
使要運行的腳本在 Perl 編譯之前通過 C 預處理程序。

-s
再腳本名之后、文件名參數之前啟用開關項解析,并從@ARGV 數組中刪除所有找到的開關項。將開關項設置為同名的標量型變量,并將標量賦值為 1 。例如,-abc 在腳本中將轉換為 $abc。

-S
如果不支持 #!/usr/bin/perl 行,則讓 Perl 在 PATH 環境變量中搜索腳本。

-T
強制打開“污染“ 檢查,用于測試腳本,一般只用在 setuid 或 setgid 程序上。推薦自行檢查 CGI 腳本。

-u
編譯后產生腳本的核心轉儲(基于 UNIX 系統)。

-U
允許 Perl 執行不安全的操作,如果是超級用戶的話,則斷開目錄鏈接。

-v
打印 Perl 的版本信息。

-V
打印最重要的 Perl 配置項和數組 @INC 中當前值的匯總。

-V:NAME
打印 NAME 的值,其中 NAME 是配置變量。

-w
打印警告信息,包括錯誤使用保留字、文件句柄、子例程等情況。

-W
啟用所有警告,而不論是否已經用 no warnings 關閉了本地警告。

-x directory
忽略 #!/usr/bin/perl 行之前的任何文本。如果將目錄名當作 -x 開關的參數,則 Perl 會在開始執行腳本之前自動切換到該目錄。

-X
關閉所有警告。

每一行將缺省保存在 $_,-p 和 -n 一樣,但是還會打印 $_ 的內容。

請注意:-p 開關和 -n 開關的使用。當您想顯式打印數據時,使用 -n 開關。-p 開關隱式地將 print $_ 語句插入到 -n 開關所產生的循環中。因此,-p 開關更適用于對文件進行的完全處理,而 -n 開關更適用于選擇性文件處理,這樣的處理只需打印特定數據。

安全網參數
有三個參數我認為可以起到“安全網”的作用,因為它們可以讓你避免犯錯,特別是當你在使用 Perl 嘗試一些特別聰明(或這愚蠢)的想法時,錯誤難免會發生。有經驗的 Perl 程序員常常使用這三個參數來提前找到錯誤所在。

-c 是第一個。這個參數編譯 Perl 程序但并不真正運行它,由此檢查所有語法錯誤,每次修改 perl 程序之后我都會立刻使用它來找到任何語法錯誤。

復制代碼 代碼如下:

$ perl -c program.pl

這保證了程序依然可以編譯。很顯然,當你輸入一小段代碼之后立即進行檢查,比起一下子輸入幾百行代碼然后開始 debug 要容易很多。

-W 是第二個參數。它會提示你任何潛在的bug。Perl 5.6.0 之后的版本已經用 use warnings; 替換了-w。你應該使用 use warnings 因為它要比 -w 更靈活。

-T 是第三個參數。它讓 perl 出于了 taint 模式中。在這個模式里,Perl 會質疑任何程序外傳來的數據。例如從命令行讀取,外部文件里讀取或是 CGI 程序里傳來的數據。這些數據在 -T 模式里都會被 Tainted(污染),Tainted 數據不可以被用來和外部交互。例如使用在 system 調用和用作 open 的文件名,關于什么數據會被Tainted,請參閱perlsec 文檔,那里有一個完整的列表。

要想使用 Tainted 的數據就必須 untaint這個數據。untaint是通過正則表達式來實現的,關于 taint 本身的內容足夠寫一篇單獨的文章,所以這里我不會太多的講述 taint 模式。如果你要編寫的程序(例如 CGI 程序)需要從從用戶那里接受不可知的輸入,我推薦使有 taint 模式。

還有一個值得一提的參數是 -d,它將讓 Perl 處于 Debugger 模式。這個話題內容非常多,我推薦閱讀文檔 ‘perldoc perldebug'或 Richard Foley 的 Perl Debugger Pocket Reference 一書.

使用模塊
下面的幾個 Perl 參數可以讓短小的 Perl 程序很容易的在命令行上運行,-e 可以讓 Perl代碼在命令行上被編譯器直接執行。例如,我們可以直接在命令行上運行“Hello World” 程序而不用把它寫稱 Perl 程序。

復制代碼 代碼如下:

$ perl -e 'print "Hello World/n"'

多個 -e 也可以同時使用,運行順序根據它出現的位置。

復制代碼 代碼如下:

$ perl -e 'print "Hello ";' -e 'print "World/n"'

象所有的 Perl 程序一樣,只有程序的最后一行不需要以 ; 結尾,你也可以用 -e 來引用模塊,但 -M 讓它變得更容易。

復制代碼 代碼如下:

$ perl -MLWP::Simple -e 'print head "http://www.example.com"'

-M模塊名和use 模塊名一樣。有些模塊有默認的模塊導入,如果你不想導入它們,你可以使用-m。-m模塊名和 use module() 一樣,關閉了默認的導入。例如下面這個例子,因為 head 函數是默認導入,而使用-m 時就不會執行,結果是沒有輸出。

復制代碼 代碼如下:

$ perl -mLWP::Simple -e 'print head "http://www.example.com"'

-m 和 -M 有很多方便的語法來幫助你使用它們,你可以在 = 后面列出對 use 的各種參數。

復制代碼 代碼如下:

$ perl -MCGI=:standard -e 'print header'

在這里,CGI.pm 的 :standard 被引入,header 函數因此可以使用。要引入多個參數可以通過使用引號和逗號。

復制代碼 代碼如下:

$ perl -MCGI='header,start_html' -e 'print header,start_html'

這里我們引入了 header 和 start_html 函數。

Implicit Loops
-n 和 -p 增加了循環的功能,使你可以一行一行來處理文件。

復制代碼 代碼如下:

$ perl -n -e 'some code' file1

這與下面的程序一樣.
LINE:

復制代碼 代碼如下:

while () {
# your code goes here
}

注意:打開命令行里的文件,一行行的讀取,每一行將缺省保存在 $_。

復制代碼 代碼如下:

$ perl -n -e 'print "$. - $_"' file

上面的這一行可以寫成 LINE: while () { print ”$. 亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

中文国产成人精品久久一| 欧美极品少妇与黑人| 97视频网站入口| 欧美激情高清视频| 国a精品视频大全| 久久久久国产精品免费网站| 午夜精品一区二区三区在线播放| 欧美日韩裸体免费视频| yw.139尤物在线精品视频| 国产精品久久久久久搜索| 国产精品大陆在线观看| 欧美综合激情网| 亚洲国产高清高潮精品美女| 欧美日韩亚洲激情| 日韩男女性生活视频| 久久夜色精品国产| 国产精品美女免费看| 欧美精品日韩www.p站| 亚洲精品免费av| 日韩精品福利网站| 亚洲最大av在线| 国产中文日韩欧美| 国产视频福利一区| 欧美特黄级在线| 国产精品69久久久久| 中文字幕国产亚洲| 久久久久久久爱| 亚洲老头同性xxxxx| 久久伊人精品天天| 欧美美女操人视频| 日韩精品极品在线观看播放免费视频| 日本中文字幕成人| 久久这里只有精品视频首页| 欧美激情精品久久久久久久变态| 97精品国产aⅴ7777| 午夜欧美大片免费观看| xvideos亚洲人网站| 亚洲热线99精品视频| 欧洲精品毛片网站| 亚洲人成亚洲人成在线观看| 色婷婷综合久久久久| 国产999精品久久久影片官网| 欧美另类在线播放| 亚洲精品第一国产综合精品| 欧美激情亚洲一区| 国产成人精品综合| 亚洲电影免费观看高清完整版在线| 午夜精品福利在线观看| 91最新在线免费观看| 久久国产精品99国产精| 国产精品ⅴa在线观看h| 日韩精品中文字幕在线| 日韩一中文字幕| 在线亚洲男人天堂| 国产日韩欧美在线播放| 久久国产视频网站| 2018日韩中文字幕| 91香蕉国产在线观看| 日韩欧美亚洲国产一区| 中文字幕欧美精品在线| 国产精品久久久久av免费| 国产精品久久久久久搜索| 国产视频欧美视频| 亚洲国产精品一区二区久| 国产精品高精视频免费| 欧美精品久久久久久久免费观看| 久久久久久久91| 午夜免费久久久久| 国产欧美日韩丝袜精品一区| 国产欧美最新羞羞视频在线观看| 亚洲加勒比久久88色综合| 亚洲欧美日本精品| 国产亚洲精品成人av久久ww| 国产美女被下药99| 成人激情电影一区二区| 日韩高清免费观看| 51久久精品夜色国产麻豆| 最近的2019中文字幕免费一页| 在线观看视频99| 日韩av在线免费观看一区| 国产丝袜一区二区三区免费视频| 欧美精品在线免费| 欧美尺度大的性做爰视频| 日韩中文在线中文网在线观看| 亚洲欧美一区二区三区在线| 日本久久中文字幕| 成人综合国产精品| 欧美激情视频网站| 狠狠色香婷婷久久亚洲精品| 亚洲性猛交xxxxwww| 国产精品久久久久久av下载红粉| 日韩av快播网址| 欧美日本国产在线| 在线不卡国产精品| 日韩欧美有码在线| 欧美日韩成人黄色| 亚洲午夜精品久久久久久久久久久久| 国产精品扒开腿做爽爽爽男男| 亚洲欧美www| 亚洲美女视频网| 国产精品黄页免费高清在线观看| 日韩国产欧美精品一区二区三区| 国产亚洲激情视频在线| 亚洲3p在线观看| 欧美黑人又粗大| 日韩av在线网| 国产日韩在线播放| 亚洲综合大片69999| 韩国美女主播一区| 日韩精品免费在线观看| 午夜精品一区二区三区av| 亚洲欧洲中文天堂| 日韩精品视频免费专区在线播放| 伊人久久大香线蕉av一区二区| 亚洲free性xxxx护士hd| 精品一区二区亚洲| 欧美激情影音先锋| 国产精品视频一区国模私拍| 日韩av手机在线| 久久成人精品电影| zzijzzij亚洲日本成熟少妇| 97久久精品人人澡人人爽缅北| 中文字幕亚洲无线码a| 亚州精品天堂中文字幕| 国产精品91免费在线| 日韩中文字幕网| 日韩欧美国产免费播放| 亚洲xxx视频| 日韩在线资源网| 亚洲黄色www| 亚洲久久久久久久久久久| 日韩av免费在线| 日韩视频免费中文字幕| 亚洲a∨日韩av高清在线观看| 午夜免费久久久久| 日韩精品在线免费观看| 日韩精品中文字幕在线| 国产女同一区二区| 在线丨暗呦小u女国产精品| 日韩免费观看在线观看| 欧美中文在线观看国产| 亚洲色图50p| 欧美一级大片在线观看| 日本老师69xxx| 日韩中文字幕在线| 亚洲最新av在线| 成人a在线视频| 精品国产福利视频| 欧美极品美女电影一区| 欧美日韩裸体免费视频| 久久91亚洲精品中文字幕奶水| 亚洲第一福利网| 久久亚洲国产成人| 亚洲精品自产拍| 久久久久久久久久久免费精品| 成人激情视频小说免费下载| 国产精品视频区1| 亚洲精品综合久久中文字幕| 国产亚洲美女久久| 国产一区二区三区四区福利| 欧美亚洲第一页| 国产成人涩涩涩视频在线观看| 久久99久久99精品免观看粉嫩| 国内精品久久久久伊人av|