Perl內建特殊變數總結_基礎教程

來源:互聯網
上載者:User

[ 檔案控制代碼 ]

$| 如果非零, 則在對當前選定的檔案執行寫或列印操作後強制清除緩衝區
$% 當前選中檔案控制代碼的當前頁碼
$= 當前選中檔案控制代碼的當前頁面長度
$- 當前選中檔案控制代碼的頁面剩餘長度
$~ 當前選中檔案控制代碼的報表格式名稱
$^ 當前選中檔案控制代碼的當前頁首格式名

[ 全域變數 ]

$_ 預設的輸入和模式搜尋空間
$@ 上一個 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]   代表當前匹配的Regex在被匹配的字串中的起始和終止的位置

[ 塊內局部變數 ]

$1..$9 含有與對應的一組括弧的子記憶模式。(等效於\1..\9)
$& 上一次與模式相匹配的字串(等效於 sed 編輯器)
$` 上一次與模式相匹配的項的前置字串
$' 上一次與模式相匹配的項之後的字串
$+ 與搜尋模式相匹配的最後一個模式
@_ 傳給子程式的參數列表

附:另一篇總結

一、Regex特殊變數:
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   Regex塊的上次求值結果
$^S   當前解譯器狀態
$^T   從新世紀開始算起,腳步本以秒計算的開始啟動並執行時間
$^W   警告開關的當前值
$^X   Perl二進位可執行代碼的名字
$_   預設的輸入/輸出和格式匹配空間
$|   控制對當前選擇的輸出檔案控制代碼的緩衝
$~   當前報告格式的名字
$`   在上個格式匹配資訊前的字串
$'   在上個格式匹配資訊後的字串
$+   與上個Regex搜尋格式匹配的最後一個括弧
$<   當前執行解譯器的使用者的真實ID
$   含有與上個匹配Regex對應括弧結果
$=   當前頁面可列印行的數目
$>   當前進程的有效使用者ID
$0   包含正在執行的指令碼的檔案名稱
$ARGV   從預設的檔案控制代碼中讀取時的當前檔案名稱
%ENV   環境變數列表
%INC   通過do或require包含的檔案清單
%SIG   訊號列表及其處理方式
@_   傳給子程式的參數列表
@ARGV   傳給指令碼的命令列參數列表
@INC   在匯入模組時需要搜尋的目錄列表
$-[0]和$+[0]   代表當前匹配的Regex在被匹配的字串中的起始和終止的位置 。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.