Perl中有很多內(nèi)置變量,它的語法也很奇怪,主要的原因是它的內(nèi)存不夠好,不能用筆記來記錄,而且會伴隨相應(yīng)的代碼來解釋,本文是武林技術(shù)頻道小編介紹的總結(jié)Perl內(nèi)置特殊變量。
[ 文件句柄 ]
$|?如果非零, 則在對當(dāng)前選定的文件執(zhí)行寫或打印操作后強(qiáng)制清除緩沖區(qū)
$%?當(dāng)前選中文件句柄的當(dāng)前頁碼
$=?當(dāng)前選中文件句柄的當(dāng)前頁面長度
$-?當(dāng)前選中文件句柄的頁面剩余長度
$~?當(dāng)前選中文件句柄的報表格式名稱
$^?當(dāng)前選中文件句柄的當(dāng)前頁眉格式名
[ 全局變量 ]
$_?默認(rèn)的輸入和模式搜索空間
$@?上一個 eval、do 或 require 函數(shù)產(chǎn)生的錯誤消息
$/?輸入記錄的分隔符, 默認(rèn)為換行符(類似于 awk 中的 RS)
$/?打印函數(shù)的輸入記錄分隔符。 除非設(shè)置了 $/="/n"? 否則不會打印換行符
$#?使用打印函數(shù)打印的數(shù)字輸出格式(類似于 awk 中的 OMFT)
$??上一個關(guān)閉的管道、反引號中的命令以及系統(tǒng)函數(shù)的返回狀態(tài)
$!?根據(jù)上下文內(nèi)容,返回錯誤號或者錯誤串??
$$?運行本腳本的 Perl 程序進(jìn)程 ID
$*?默認(rèn)值為 0 。 如果為 1 的話, 表示在字符串中進(jìn)行多行匹配; 0 表示只在單行中匹配
$,?打印函數(shù)的輸出字段分隔符。 一般在以逗號隔開的字符串中不打印其定界符, 除非設(shè)置了 $,=" "
$"?與 $, 類似, 但它是在雙引號中提供打印數(shù)組的, 默認(rèn)值為空格
$0?Perl 腳本名
$[?指向數(shù)組或子串的第一個字符的索引, 默認(rèn)值為 0
$]?當(dāng)使用 Perl - v 命令獲得版本信息時打印出字符串的第一部分
$;?多維數(shù)組的下標(biāo)分隔符。 默認(rèn)為 /034 (類似于 awk 的 SUBSEP)
$.?讀取上一個文件句柄的當(dāng)前輸入行號; 必須在關(guān)閉前一個文件句柄后才能對下一個文件句柄重置行號
$<?進(jìn)程的實際 uid
$>?進(jìn)程的有效 uid
$(?進(jìn)程的實際 gid
$)?進(jìn)程的有效 gid
$:?字符集, 將其后的字符串?dāng)嚅_, 并以某種格式填入連續(xù)的行(從 ^ 處開始)。 默認(rèn)是以空白字符、換行符或冒號上隔開的 /n-
$^A?formline 和 write 操作的累加器
$^C?如果 Perl 使用 -c 選項在只編譯的模式下運行, 則返回 TRUE
$^D?使用 -D 開關(guān)打開 Perl 調(diào)試標(biāo)記
$^E?操作系統(tǒng)的相關(guān)出錯信息
$^F?傳遞給子例程的最大文件描述符數(shù), 一般是 2
$^H?語法檢查的當(dāng)前狀態(tài)
$^I?在使用 -i 開關(guān)時, 原位編輯擴(kuò)展的當(dāng)前值
$^L?進(jìn)紙符, 用在格式中
$^M?緊急內(nèi)存池
$^O?操作系統(tǒng)名
$^P?內(nèi)部 Perl 調(diào)試標(biāo)記
$^S?Perl 解釋器的狀態(tài)
$^T?腳本執(zhí)行時間。 用于 -A、-C 和 -M 測試運算符, 可設(shè)置為 time 返回的任何數(shù)字值, 執(zhí)行與當(dāng)前時間有關(guān)的文件測試
$^V?Perl 版本
$^W?警告開關(guān)的當(dāng)前設(shè)定情況
$^X??Perl 調(diào)用的全路徑名
_?下劃線, 負(fù)責(zé)在聲明文件時測試文件的特殊標(biāo)識符
ARGV?用于行參數(shù)循環(huán)的特殊文件句柄數(shù)組
$ARGV??從 <ARGV> 讀取時, 含有當(dāng)前文件名的變量
@ARGV?含有命令行參數(shù)的數(shù)組
DATA?一個特殊文件句柄變量, 負(fù)責(zé)引用 _END_ 標(biāo)志后面的內(nèi)容
@F?在使用 -a 開關(guān)時, 自動拆分輸入行所得到的數(shù)組
@INC?一個含有文件名路徑的數(shù)組, require 和 do 函數(shù)從中搜索將要導(dǎo)入的文件名路徑
%INC?一個含有文件名路徑的關(guān)聯(lián)數(shù)組, require 和 do 函數(shù)將從中搜索將要導(dǎo)入的文件名路徑。 其中鍵是文件名, 值是文件路徑位置
%ENV?含有當(dāng)前環(huán)境變量的關(guān)聯(lián)數(shù)組
@EXPORT?導(dǎo)出時的默認(rèn)符號
@EXPORT_OK?根據(jù)用戶請求而導(dǎo)出的符號
%EXPORT_TAGS?用于 Exporter.pm 中, 負(fù)責(zé)對符號集合統(tǒng)一命名
%SIG?用于設(shè)置信號處理例程的關(guān)聯(lián)數(shù)組
STDERR?用于標(biāo)準(zhǔn)出錯內(nèi)容的特殊文件句柄
STDIN?用于標(biāo)準(zhǔn)輸入的特殊文件句柄
STDOUT?用于標(biāo)準(zhǔn)輸出內(nèi)容的特殊文件句柄
$-[0] 和 $+[0] ??代表當(dāng)前匹配的正則表達(dá)式在被匹配的字符串中的起始和終止的位置
[ 塊內(nèi)局部變量 ]
$1..$9?含有與對應(yīng)的一組括號的子記憶模式。(等效于/1../9)
$&?上一次與模式相匹配的字符串(等效于 sed 編輯器)
$`?上一次與模式相匹配的項的前導(dǎo)字符串
$'?上一次與模式相匹配的項之后的字符串
$+?與搜索模式相匹配的最后一個模式
@_?傳給子程序的參數(shù)列表
附:另一篇總結(jié)
一、正則表達(dá)式特殊變量:
1、$n :包含上次模式匹配的第n個子串
2、$& :前一次成功模式匹配的字符串
3、$` :前次匹配成功的子串之前的內(nèi)容
4、$' :前次匹配成功的子串之后的內(nèi)容
5、$+ :前一次使用括號的模式匹配的字符串.
二、文件句柄特殊變量:
1、$| :如果設(shè)置為零,在每次調(diào)用函數(shù)write或print后,自動調(diào)用函數(shù)fflush,將所寫內(nèi)容寫回文件
2、$% :當(dāng)前輸出頁號
3、$= :當(dāng)前每頁長度
4、$- :當(dāng)前頁剩余的行數(shù)
5、$~ :當(dāng)前報表輸出格式的名稱.默認(rèn)值是文件句柄名.
6、$^ :當(dāng)前報表輸出表頭格式的名稱.默認(rèn)值是帶后綴”_TOP”的文件句柄名.
三、全局特殊變量:
1、$_和$ARG :默認(rèn)輸入和模式匹配內(nèi)容.如果不指定接收輸入的變量或執(zhí)行模式匹配的字符串
2、$.和$NR :前一次讀的文件句柄的當(dāng)前行號
3、$/和$RS :輸入記錄分隔符,默認(rèn)是新行字符.如用undef這個變量,將讀到文件結(jié)尾
4、$,的$OFS :輸出域分隔符.
5、$/和$ORS :輸出記錄分隔符
6、$: :斷行字符,默認(rèn)是”/n-”三個字符
7、$! :這個變量的數(shù)字值是errno的值,字符串值是對應(yīng)的系統(tǒng)錯誤字符串
8、$@ :命令eval的錯誤消息.如果為空,則表示上一次eval命令執(zhí)行成功
9、$$ :運行當(dāng)前Perl腳本程序的進(jìn)程號
10、$< :當(dāng)前進(jìn)程的實際用戶號
11、$> :當(dāng)前進(jìn)程的有效用戶號
12、$( :當(dāng)前進(jìn)程的實際組用戶號
13、$) :當(dāng)前進(jìn)程的有效組用戶號
14、$[ :數(shù)組的數(shù)組第一個元素的下標(biāo),默認(rèn)是0
15、$] :Perl的版本號
16、$ARGV :當(dāng)使用”< >”讀文件時,保存當(dāng)前文件名
四、全局特殊數(shù)組變量:
1、@ARGV :保存命令行參數(shù)
2、@INC :保存查找Perl程序的目錄
3、@_ :在子程序內(nèi),這個數(shù)組變量包含傳遞給子程序的參數(shù)
4、%INC :散列表%INC包含所有用do或require語句包含的文件.關(guān)鍵字是文件名,值是這個文件的路徑
5、%ENV :包含當(dāng)前環(huán)境變量
五、全局特殊文件句柄
1、ARGV :遍歷數(shù)組變量@ARGV中的所有文件名的特殊文件句柄
2、STDERR :標(biāo)準(zhǔn)錯誤輸出句柄
3、STDIN :標(biāo)準(zhǔn)輸入句柄
4、STDOUT :標(biāo)準(zhǔn)輸出句柄
PERL內(nèi)置變量:
$- 當(dāng)前頁可打印的行數(shù),屬于Perl格式系統(tǒng)的一部分
$! 根據(jù)上下文內(nèi)容返回錯誤號或者錯誤串
$” 列表分隔符
$# 打印數(shù)字時默認(rèn)的數(shù)字輸出格式
$$ Perl解釋器的進(jìn)程ID
$% 當(dāng)前輸出通道的當(dāng)前頁號
$& 與上個格式匹配的字符串
$( 當(dāng)前進(jìn)程的組ID
$) 當(dāng)前進(jìn)程的有效組ID
$* 設(shè)置1表示處理多行格式.現(xiàn)在多以/s和/m修飾符取代之.
$, 當(dāng)前輸出字段分隔符
$. 上次閱讀的文件的當(dāng)前輸入行號
$/ 當(dāng)前輸入記錄分隔符,默認(rèn)情況是新行
$: 字符設(shè)置,此后的字符串將被分開,以填充連續(xù)的字段.
$; 在仿真多維數(shù)組時使用的分隔符.
$? 返回上一個外部命令的狀態(tài)
$@ Perl解釋器從eval語句返回的錯誤消息
$[ 數(shù)組中第一個元素的索引號
$ 當(dāng)前輸出記錄的分隔符
$] Perl解釋器的子版本號
$^ 當(dāng)前通道最上面的頁面輸出格式名字
$^A 打印前用于保存格式化數(shù)據(jù)的變量
$^D 調(diào)試標(biāo)志的值
$^E 在非UNIX環(huán)境中的操作系統(tǒng)擴(kuò)展錯誤信息
$^F 最大的文件捆述符數(shù)值
$^H 由編譯器激活的語法檢查狀態(tài)
$^I 內(nèi)置控制編輯器的值
$^L 發(fā)送到輸出通道的走紙換頁符
$^M 備用內(nèi)存池的大小
$^O 操作系統(tǒng)名
$^P 指定當(dāng)前調(diào)試值的內(nèi)部變量
$^R 正則表達(dá)式塊的上次求值結(jié)果
$^S 當(dāng)前解釋器狀態(tài)
$^T 從新世紀(jì)開始算起,腳步本以秒計算的開始運行的時間
$^W 警告開關(guān)的當(dāng)前值
$^X Perl二進(jìn)制可執(zhí)行代碼的名字
$_ 默認(rèn)的輸入/輸出和格式匹配空間
$| 控制對當(dāng)前選擇的輸出文件句柄的緩沖
$~ 當(dāng)前報告格式的名字
$` 在上個格式匹配信息前的字符串
$' 在上個格式匹配信息后的字符串
$+ 與上個正則表達(dá)式搜索格式匹配的最后一個括號
$< 當(dāng)前執(zhí)行解釋器的用戶的真實ID
$ 含有與上個匹配正則表達(dá)式對應(yīng)括號結(jié)果
$= 當(dāng)前頁面可打印行的數(shù)目
$> 當(dāng)前進(jìn)程的有效用戶ID
$0 包含正在執(zhí)行的腳本的文件名
$ARGV 從默認(rèn)的文件句柄中讀取時的當(dāng)前文件名
%ENV 環(huán)境變量列表
%INC 通過do或require包含的文件列表
%SIG 信號列表及其處理方式
@_ 傳給子程序的參數(shù)列表
@ARGV 傳給腳本的命令行參數(shù)列表
@INC 在導(dǎo)入模塊時需要搜索的目錄列表
$-[0]和$+[0] 代表當(dāng)前匹配的正則表達(dá)式在被匹配的字符串中的起始和終止的位置 。
看了今天這篇總結(jié)Perl內(nèi)置特殊變量,大家對Perl內(nèi)置特殊變量有了多少了解呢?喜歡武林技術(shù)頻道小編整理的知識,請繼續(xù)關(guān)注武林技術(shù)頻道吧!
新聞熱點
疑難解答
圖片精選