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